尝试在c ++中清除内存时双重释放或损坏

时间:2017-10-09 02:26:24

标签: c++ pointers memory-management memory-leaks

我正在编写一个释放指针数组的函数,但是当我调用该函数时,我得到的运行时错误是双重释放或损坏(快速顶部)'。该函数的目的是清除数组,如果文件已经打开并且再次调用fillArray函数,该数组将从输入文件中获取数据。

以下是导致问题的功能:

void freeArray(Country ** g_countryArray)
{
    for (int i = 0; i < g_arrsz; ++i)
    {
        delete [] g_countryArray;
    }
}

如果它在程序中的任何地方被调用,据我所知,它会导致程序崩溃。我已经运行了调试器但是没有足够的经验来理解输出。如果有帮助,我可以发布信息。

2 个答案:

答案 0 :(得分:0)

你遗漏了循环体中的[i]。如果单个指针指向单个[]对象,则需要删除Country

你可能希望delete[]整个数组;这取决于你的其余代码。

答案 1 :(得分:0)

delete [] g_countryArray;更改为delete g_countryArray[i];

delete [] arr一次删除整个数组。