wuhuaqiang:大概浏览了一下你的代码,释放内存那块好像应该改为
CCompiler::~CCompiler()
{
//下面这段释放内存的代码不知道为什么出错
// for(int i=0;i
// delete [] m_vectorSymbol[i].szStr;
}
感觉这种简单类型用malloc和free分配和释放方便一些
(发表于2005-1-20 13:05:00)
wuhuaqiang:刚刚调试一下你的代码,肯定要加上释放内存语句,总不能因为出错就不释放内存了:)
出错是因为代码存在缓冲区溢出漏洞,程序存在多处数组越界访问,篡改了不属于你的内存区,释放内存时系统会检查这些东西,当然会出错了。
编码的基本功和细心程度有待提高。
(发表于2005-1-20 13:30:00)
wuhuaqiang:好了,你的程序问题我帮你解决了:)
原因是你在给字符串分配内存时没有考虑'\0'占用的空间,低级错误啊!!
将程序中所有new char[xxx]的地方改为new char[xxx + 1],就好了,释放内存不会出错了:)
还有一个函数bool CCompiler::LexAnalysis(char *szStr)
...
中szTemp=new char[nLen + 1];
szTemp没有释放!!!
然后就没有泄漏问题了。
(发表于2005-1-20 13:44:00)
..........................................................................
--------------------next---------------------
阅读(447) | 评论(0) | 转发(0) |