首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为何DELETE会出错呢

2012-07-28 
为什么DELETE会出错呢?Buffer new BYTE[ 1520 * Count ].............delete [] Buffer为什么会出错呢

为什么DELETE会出错呢?
Buffer = new BYTE[ 1520 * Count ];
.............
delete [] Buffer;

为什么会出错呢?
Debug Assertion Failed,然后出现着一个框.
怎么办呢?

[解决办法]
delete之前先判断一下?
if(Buffer==NULL)
 perror("create new block failed"),exit(-1);
[解决办法]

探讨

delete之前先判断一下?
if(Buffer==NULL)
perror("create new block failed"),exit(-1);

[解决办法]
确定delete以后没用到这个指针了么 ,
delete后置为NULL
[解决办法]
delete Buffer; 
不要[]


[解决办法]
同意二楼。

delete后立即置为NULL。

delete前先判断,只有非NULL才删除。
[解决办法]
如果 delete 的话,一定要 []。
[解决办法]
确定是delete这句的错误么?那么有可能是new Buffer失败了。
[解决办法]
如果是先后new了好几个指针,那么不一定是Buffer本身的问题,应该是在delete前面一个指针时,如果该指针在使用时出现了越界,正好影响到Buffer所分配的区域,那么在删除buffer的时候,就会报错
所以,如果是这种多个指针同时分配的情况,检查一下前面几个指针的访问是否有越界之类的情况


[解决办法]
看你谢谢代码
除了ZeroMemory( StrArray,sizeof(StrArray));有些问题
其它应该不会出错
[解决办法]
BYTE *p=new BYTE[10000];
if (p!=NULL)
{
delete []p;
}
我这样根本没有出错啊,
你的这个GlyphInfo是什么类型的????还有这个StrArray ??
[解决办法]
ZeroMemory( StrArray,sizeof(StrArray));
 ZeroMemory( StrArray,Count * 1520);
把这两句去掉试试

热点排行