Posted on 2008-06-21 17:47
Maikkk 阅读(24)
评论(0) 编辑 收藏 引用
今天遇到个奇怪的问题。就是在debug编译版本下运行正常,而在release版本下就出错
用了OD调试捕获的异常在系统模块里面,虽然是捕获了异常但是在堆栈里面却找不到返回的函数地址
没办法只能简单一步步缩小范围输出调试信息调试。有点土
经过调试后发现原来下面代码出现问题
char *command=new char[10+m_ProxyPeerHost.GetLength()];
memset(command,0,10+m_ProxyPeerHost.GetLength()+1);
...
delete [] command;
照我的理解delete 应该是稀放对应new的内存块的
这样的代码在debug版本下运行没问题
但是在release版本下就出错了,我猜测可能是delete 也把结尾的一个字节空间也要稀放
但那个一个字节的空间却不是new 分配得的!
然后就把代码改为
char *command=new char[10+m_ProxyPeerHost.GetLength() + 1];
就可以了。呵呵