我在将数字连接到char数组末尾的函数时遇到问题。老实说,我看不到这个问题:
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
必须足够大以容纳num
中的位数,再加上一个空终止符。由于它的大小为1,因此您只有足够的空间容纳空终止符。尝试添加其他任何内容都是未定义的行为,因为它访问您不拥有的内存并导致堆损坏。
关于c++ - 释放动态内存时,Visual Studio中出现堆损坏错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35093363/