我有一个带for循环的函数,并且在循环内部(并取决于输入),使用(一次)首次对某些变量进行了初始化malloc()
。
这些变量的声明如下:
static double *vector;
然后我使用分配内存
malloc(size*sizeof(double));
问题是:
是否必须在被调用函数内部的循环的最后一次迭代中释放这些变量?
更新:也许我向某些人解释自己错了。事情就是所谓的函数(func_A)根据主要函数的输入为其使用的某些向量分配内存。然后,从主循环中多次调用此func_A。这就是为什么我将变量定义为静态的原因,这样就不会在每次调用func_A时都定义它们(出于时间消耗的原因),因为尺寸在整个运行过程中都不会改变。变量是静态的,但不是全局变量,因此我无法从主变量中释放它们(对吗?)。
您应该始终在malloc
与通话之间保持平衡free
。
对于您的情况,可以在知道不再需要时调用它vector
。
如果这不切实际,那么您可以随时致电atexit
; 传递给它一个指向合适函数的指针,该函数将free
存储在内存中。参见http://www.tutorialspoint.com/c_standard_library/c_function_atexit.htm
尽管您通常可以依靠操作系统来为程序终止进行清理,但是依靠它是很粗糙的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句