gpt4 book ai didi

c - C中的内存分配/释放

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:40 29 4
gpt4 key购买 nike

我知道在像 c 这样的语言中,我需要在分配内存后释放它。 (我来自 Java),对此我有几个问题:

  1. 当我在做的时候:

    int array[30];      

    (即创建一个大小为 30 个整数的数组)与正在做?

    int array[] = malloc(sizeof(int)*30);
  2. 作为第一个问题的顺序,当我创建数组时在函数内部(即函数的局部而不是全局的整个文件),我需要释放里面这个数组的内存吗?我在哪里创建它的功能? (我没有看到任何其他方式释放它,因为我无法将创建的所有数组的引用传递回main() 函数)。

简而言之,我想知道我什么时候需要为创建的对象/基元(在函数内或函数外)释放内存。

最佳答案

如果你说

int array[30];

这是在堆栈上,当它超出范围时会自动为您清理。

如果你说

int * array = (int *)malloc(sizeof(int)*30);

内存将分配到空闲存储(堆)上,您负责释放它

free(array);

无论代码是在函数调用中还是在 main 中,这同样适用。如果使用malloc,则需要使用free

关于c - C中的内存分配/释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309928/

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