У меня возникла проблема с функцией, которая объединяет число до конца массива символов. Я честно не могу видеть проблему:Ошибка кучи повреждения в Visual Studio при освобождении динамической памяти
void x(int num, char* originalArray) {
char* concat_str = new char[1];
sprintf(concat_str, "%d", num);
for (int i = 0; i < 1; i++)
originalArray[i + 10] = concat_str[i];
delete [] concat_str;
}
Сообщение об ошибке:
КУЧА КОРРУПЦИЯ ОБНАРУЖЕН: после нормального блока (# 147) на 0x01204CA0. CRT обнаружил, что приложение записано в память после окончания буфера кучи.
Любые идеи? Я начинающий программист, но я много раз делал то же самое и никогда не сталкивался с этой проблемой. Благодарю.
** символ * concat_str = новый символ [1]; ** Вы понимаете, в CString размера 1 может содержать только нулевой завершающий символ. Любые цифры числа будут слишком большими. – drescherjm
* но я много раз делал то же самое и никогда не сталкивался с этой проблемой. * - Ты много раз попирал память и не имел проблемы?Возможно, вам стоит просмотреть свой старый код, так как выполнение того, что вы делаете в сообщении, - это неопределенное поведение. – PaulMcKenzie
Зачем даже беспокоиться о новых и удалять там? Просто объявите буфер в стеке, например 'concat_str [32];'. –