gpt4 book ai didi

arrays - ANSI C,垃圾收集器和函数环境数组,退出函数会取消数组吗?

转载 作者:行者123 更新时间:2023-11-30 15:48:36 25 4
gpt4 key购买 nike

我需要编写一个函数,在其中声明一个新数组,然后我需要将该数组保留在内存中...

我想知道达到这个结果的最佳编程实践是什么,我也很想了解垃圾收集器在这种特定情况下如何工作

在这种情况下,如果我声明一个函数并在其中初始化一个数组,如果我保留对函数外部地址的引用,一旦函数完成工作,并且它的环境不再存在,数组将不再存在仍然可用,或者我是否有进一步的 malloc 或数组声明会意外覆盖我以前的数组的风险?

另外,如果我在函数内使用 malloc,分配的内存是否会保留保留,直到我释放它,无论我在哪里使用 malloc?

感谢任何人提供的帮助。

最佳答案

C 中没有垃圾回收!

你应该读一本关于 C: The Definitive C Book Guide and List 的书,特别是关于指针、堆和堆栈。

如果您 malloc 一段内存,则指针位于堆上,并且在对该指针调用 free 之前不会消失或“变得不可用”。它与函数的作用域无关,函数也称为堆栈帧。如果您在堆栈上声明了一个固定大小的数组,那么一旦堆栈展开,它就会超出范围。

总之,你的最后一句话是正确的,如果你使用malloc,内存将在堆上分配,直到你调用free。

关于arrays - ANSI C,垃圾收集器和函数环境数组,退出函数会取消数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737790/

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