Повреждение кучи при возврате из функции внутри 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* также решает проблему.

Что может быть причиной этой ошибки? Как мне это решить?

Ответы на вопрос(3)

Ваш ответ на вопрос