gpt4 book ai didi

c - 我是 "have to"free() 静态动态分配指针吗?

转载 作者:行者123 更新时间:2023-12-05 03:10:35 26 4
gpt4 key购买 nike

我有一个带有 for 循环的函数,在循环内部(并且取决于输入)某些变量使用 malloc() 初始化一次(第一次)。

这些变量声明如下:

static double *vector;

然后我使用

分配内存
malloc(size*sizeof(double));

问题是:

我是否必须在被调用函数内循环的最后一次迭代中释放这些变量?

更新:也许我对某些人的解释是错误的。问题是被调用函数 (func_A) 根据主函数的输入为其使用的某些 vector 分配内存。然后,这个 func_A 在 main 中的循环中被调用了几次。这就是为什么我将变量定义为静态的,这样它们就不会在每次调用 func_A 时都被定义(出于时间消耗的考虑),因为维度在整个运行过程中不会改变。这些变量是静态的但不是全局的,所以我不能将它们从 main 中释放出来(对吧?)。

最佳答案

您应该始终malloc 与调用 free 之间取得平衡。

在您的情况下,当您知道不再需要 vector 时,您可以调用它。

如果那不切实际,那么您可以随时调用 atexit;向它传递一个指向合适函数的指针,该函数将释放内存。参见 http://www.tutorialspoint.com/c_standard_library/c_function_atexit.htm

虽然您通常可以依靠操作系统在程序终止时为您清理,但依靠它是相当粗鲁的。

关于c - 我是 "have to"free() 静态动态分配指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39385520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com