在我的mfc应用程序中,我有一个富文本框,用户可以在其中输入字符串。 当用户在富文本框中输入任何内容时,我调用了一个函数'FormatText(int start,int end)'来格式化输入的文本。 在函数中,我写了以下代码
TCHAR *pBuffer = NULL;
try
{
pBuffer = new TCHAR[nEnd - nStart + 1];
...
...
...
}
catch(...)
{
}
delete [] pBuffer;
但是当我在富文本框中输入任何值时,我得到了堆内存损坏和程序崩溃的异常,
当我调试代码时,visual studio在行显示异常,
delete [] pBuffer;
有没有其他方法可以删除/释放内存。 任何帮助将不胜感激。
答案 0 :(得分:4)
您必须找到并修复损坏,而不是寻找另一种删除方式。在delete []操作之前的某个时间发生了堆损坏。该操作仅检测到它先前发生过。注释掉代码的某些部分,和/或用琐碎的操作替换它们,直到腐败消失为止。这应该可以帮助您找出导致问题的代码。
答案 1 :(得分:0)
你真的抓住所有异常并默默地放弃它们吗?这里可能有一个新的失败(std :: bad_alloc)
对nEnd&有没有检查? nStart,确保您新增'是> 0?
因此,您可能希望在删除之前检查pBuffer是否为NULL。