使用vs运行程序时我们有时候会看到这样的一个错误:“XXX处有未经处理的异常: 0xC0000374: 堆已损坏”。导致该错误产生的原因一般是是访问了未分配的地址,内存越界造成的,越界写了不该写的内存区域。
示例:有如下程序。
#include <stdio.h>
#include <string.h>
int main()
{
char *str = new char[1];
strcpy(str, "hello world");
printf("str:%s\n", str);
return 0;
}
编译,运行,我们会发现程序报错了,如下图所示: