来自:http://blog.csdn.net/djdjnn/article/details/4960124
错误源头一,数组访问越界:
大家先看如下一段程序:
int* a = new int[5];
a[5] = 3; // 这儿访问越界了
delete[] a;
在delete[] a;这句代码处将会出现:DAMAGE:After normal block(#93)的错误。
错误源头二:
char* pBuffer = new char[2];
int v = 12345;
memcpy(pBuffer, &v, sizeof(v));
delete[] pBuffer;
正如代码所表示的,我的缓冲区pBuffer有且仅分配了2Bytes的空间,然面我却向它塞了4Bytes的值,显然这是不正确的,DEBUG一下,将出现:DAMAGE:After normal block(#94)的错误。
本文通过两个实例详细解析了数组访问越界及内存溢出的问题,第一个实例展示了当数组索引超出分配范围时如何引发错误;第二个实例则说明了当尝试向分配不足的内存区域写入过多数据时导致的后果。
994

被折叠的 条评论
为什么被折叠?



