我正在编写一个释放指针数组的函数,但是当我调用该函数时,我得到的运行时错误是双重释放或损坏(快速顶部)'。该函数的目的是清除数组,如果文件已经打开并且再次调用fillArray函数,该数组将从输入文件中获取数据。
以下是导致问题的功能:
void freeArray(Country ** g_countryArray)
{
for (int i = 0; i < g_arrsz; ++i)
{
delete [] g_countryArray;
}
}
如果它在程序中的任何地方被调用,据我所知,它会导致程序崩溃。我已经运行了调试器但是没有足够的经验来理解输出。如果有帮助,我可以发布信息。
答案 0 :(得分:0)
你遗漏了循环体中的[i]
。如果单个指针指向单个[]
对象,则需要删除Country
。
你可能也希望delete[]
整个数组;这取决于你的其余代码。
答案 1 :(得分:0)
将delete [] g_countryArray;
更改为delete g_countryArray[i];
。
delete [] arr
一次删除整个数组。