DAMAGE:After normal block(#****)
2012-10-23 15:48
288 查看
from:http://blog.163.com/sunny_110119/blog/static/37068271201022510025869/
最近在调试程序的时候,遇到这样一个错误:damage:after normal block(#286) at 0x003865D8.当时想了半天没有想明白,明明分配空间了,有地址的,为什么删除时报错呢?
代码如下:
PSubTree *SPSTree =new PSubTree[cn];//定义子后缀子树
for(k=0;k<=cn;++k) 。。。。。。。。。。。(1)
// for(k=0;k<cn;++k) 。。。。。。。。。。(2)
{
SPSTree[k].branch =NULL;
SPSTree[k].base_count[0] = PSTree[k].base_count [0];
SPSTree[k].base_count[1] = PSTree[k].base_count [1];
}
.......
delete []SPSTree;//运行到此处时报错
到网上去搜了下,发现是个内存溢出的问题。理解了之后,这个错误的意思也就显而易见了:正常的内存块之后有破坏,也就是你写过头了,占了别人的地盘,造成了破坏。反观上面的代码,使用(1)那句代码,k=cn的时候还在写,肯定越界了,造成了后面数据的破坏。屏蔽句(1)使用句(2),删除成功。
以下的是别人的总结,觉得写的挺好的,当初就是看了这个帖子才找到那段错误代码的,O(∩_∩)O~
转帖地址:http://blog.tianya.cn/blogger/post_show.asp?BlogID=624018&PostID=15160941
错误源头一,数组访问越界:
大家先看如下一段程序:
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)的错误。
最近在调试程序的时候,遇到这样一个错误:damage:after normal block(#286) at 0x003865D8.当时想了半天没有想明白,明明分配空间了,有地址的,为什么删除时报错呢?
代码如下:
PSubTree *SPSTree =new PSubTree[cn];//定义子后缀子树
for(k=0;k<=cn;++k) 。。。。。。。。。。。(1)
// for(k=0;k<cn;++k) 。。。。。。。。。。(2)
{
SPSTree[k].branch =NULL;
SPSTree[k].base_count[0] = PSTree[k].base_count [0];
SPSTree[k].base_count[1] = PSTree[k].base_count [1];
}
.......
delete []SPSTree;//运行到此处时报错
到网上去搜了下,发现是个内存溢出的问题。理解了之后,这个错误的意思也就显而易见了:正常的内存块之后有破坏,也就是你写过头了,占了别人的地盘,造成了破坏。反观上面的代码,使用(1)那句代码,k=cn的时候还在写,肯定越界了,造成了后面数据的破坏。屏蔽句(1)使用句(2),删除成功。
以下的是别人的总结,觉得写的挺好的,当初就是看了这个帖子才找到那段错误代码的,O(∩_∩)O~
转帖地址:http://blog.tianya.cn/blogger/post_show.asp?BlogID=624018&PostID=15160941
错误源头一,数组访问越界:
大家先看如下一段程序:
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)的错误。
相关文章推荐
- Debug Error! DAMAGE:after Normal Block (#Xxxx) 问题
- DAMAGE:after Normal block的解决方法
- 关于DAMAGE: after Normal block的问题
- 再谈"DAMAGE:after Normal block"的解决方法
- 谈"DAMAGE:after Normal block"的解决方法
- 谈"DAMAGE:after Normal block"的解决方法
- DAMAGE:after Normal block
- DAMAGE: after Normal block
- DAMAGE:after Normal block问题
- DAMAGE: after Normal block (#) at 0x....错误分析
- DAMAGE:after Normal Block(#63) at 0x00382ca8
- Debug Error DAMAGE:after normal block(#XXXX)at 0xXXXXXXXX
- vc++中debug error: Damage before/after normal block
- DAMAGE:after Normal block
- DAMAGE:After normal block(#****)
- DAMAGE:after Normal block问题
- DAMAGE:After normal block
- DAMAGE:After normal block(#****)
- DAMAGE:After normal block(#****) (转)
- 运行时刻错误:DAMAGE: After normal block