我正在写一个函数,释放一个指针数组,但是当我调用该函数,得到运行时错误'双免费或腐败(fasttop)'。该函数的目的是清除数组,该数组从输入文件中获取数据,如果该文件已经打开并且再次调用fillArray函数。当试图清除内存在c + +双免费或腐败
这是导致问题的功能:
void freeArray(Country ** g_countryArray)
{
for (int i = 0; i < g_arrsz; ++i)
{
delete [] g_countryArray;
}
}
如果它在程序的任何地方调用,据我所知,它会导致程序崩溃。我运行了调试器,但没有足够的经验来理解输出。如果有帮助,我可以发布信息。
为什么你多次删除相同的指针?这没有意义。一个就足够了;第二次展示未定义的行为。 –
你的问题是'g_arrsz'是'> 1'。那么,你的函数几乎肯定会做错误的事情,因为它删除了一个指针数组,而不是指针指向的内容。实际上你的问题似乎是你不知道任何C++或C,并且正在使用指向指针的指针。没有等待!你的直接问题是缺乏[mcve]。基本上你有99个问题,这个问题不会解决所有问题。 – Yakk
感谢您指导制定更好的答案。是的,我正在学习C++,所以不,我不是专家。你为什么暗示指针指针不好?这是一个类的分配,并使用指针指针是需求的一部分... –