Повреждение кучи при возврате из функции внутри dll
У меня есть функция с прототипом, как показано ниже:
void function(std::string str);
Эта функция вызывается в моей основной функции в другой программе, которая загружает и использует эту DLL.
function("some string value here");
При возвращении из этой функции я получаю ошибку повреждения кучи:
Windows запустила точку останова в program.exe.
Это может быть связано с повреждением кучи, что указывает на ошибку в program.exe или любой из загруженных им библиотек DLL.
Это также может быть связано с тем, что пользователь нажимает клавишу F12, пока программа program.exe находится в фокусе.
Окно вывода может иметь больше диагностической информации.
Играя с моим кодом, я заметил несколько странных наблюдений:
1. Когда длина передаваемой строки меньше 11 символов, я не получаю ошибок, как только я добавляю больше символов, появляется ошибка.
2. При изменении типа параметра сstd::string
вstd::string&
ошибка исчезает. Идея передачи ссылки пришла отВот.
3. Ямы закомментировали тело функции. Операции там не имеют ничего общего с произведенным исключением.
4. Изменение типа параметра сstd::string
вchar*
также решает проблему.
Что может быть причиной этой ошибки? Как мне это решить?