删除[] pBuff抛出'c0000374(堆损坏)'异常和程序崩溃

时间:2013-06-28 09:06:41

标签: visual-c++ mfc richtextbox

在我的mfc应用程序中,我有一个富文本框,用户可以在其中输入字符串。 当用户在富文本框中输入任何内容时,我调用了一个函数'FormatText(int start,int end)'来格式化输入的文本。 在函数中,我写了以下代码

TCHAR *pBuffer = NULL;


try 
    {
        pBuffer = new TCHAR[nEnd - nStart + 1]; 
            ...
            ...
            ...
    } 
catch(...)
{
}


delete [] pBuffer;

但是当我在富文本框中输入任何值时,我得到了堆内存损坏和程序崩溃的异常,
当我调试代码时,visual studio在行显示异常,

delete [] pBuffer;

有没有其他方法可以删除/释放内存。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

您必须找到并修复损坏,而不是寻找另一种删除方式。在delete []操作之前的某个时间发生了堆损坏。该操作仅检测到它先前发生过。注释掉代码的某些部分,和/或用琐碎的操作替换它们,直到腐败消失为止。这应该可以帮助您找出导致问题的代码。

答案 1 :(得分:0)

你真的抓住所有异常并默默地放弃它们吗?这里可能有一个新的失败(std :: bad_alloc)

对nEnd&有没有检查? nStart,确保您新增'是> 0?

因此,您可能希望在删除之前检查pBuffer是否为NULL。