【发布时间】:2014-01-28 09:15:54
【问题描述】:
我有一个递归函数,每次调用该函数时都需要创建一个新数组。该函数还需要之前创建的数组:
void myFunc(int* prevArray)
{
int newSize;
//do some calculations to find newSize
int* newArray;
newArray = new int[newSize];
//do some calculations to fill newArray
//check some stopping condition
myFunc(newArray);
}
这个函数会泄漏内存,但我无法通过添加来避免这种情况
删除[] newArray;
因为我只能在再次调用该函数后添加它。我该如何解决这个问题?
【问题讨论】:
-
在调用
myFunc之后做delete[] newArray;有什么问题? -
好吧,只要递归继续进行,它就会一直堆积内存。数组相当大,我需要经常调用这个函数。
-
你可以删除
prevArray,除非它等于nullptr。 -
@RobVerheyen 好吧,这似乎是您算法的自然结果 - 每次连续调用
myFunc都需要一个由前一次调用计算的大数组。 -
不会从前一个实例中复制 prevArray 吗?
标签: c++ recursion memory-leaks