当我们在申请堆内存的时候 如果申请的空间小于我们预定的空间 然后我们释放的空间多于我们申请的空间
如 char p[10];
cin>>p; (假设是tao)
int len=strlen(p);
char *p2=new char[len];
strcpy(p2,p);
cout<<p2<<endl;
delete []p2;
此时VC 6.0会报错
Normal block
那是因为strcpy会将 tao和 ‘/0’
复制给p2 但是我们申请的空间只有
3个 所以当我们释放的时候 就会释放那个
不是我们申请的 所以编译器就会报错
对于VS2013 则会报错
CRT detected that application wrote memory after end of heap buffer