Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514246
  • 博文数量: 576
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5020
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(576)

文章存档

2011年(1)

2008年(575)

我的朋友

分类:

2008-10-14 15:10:58

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---------------------

阅读(420) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~