c - 超出范围是否释放了(字符)数组的内存?

标签 c arrays memory

my previous question 非常相关,但我发现这是一个单独的问题,无法找到可靠的答案。

(字符)数组使用的内存是否因超出范围而被释放?

一个例子:

void method1()
{
  char str[10];
  // manipulate str
}

那么在method1调用之后,str(10字节)使用的内存是被释放了,还是我也需要显式调用free呢?

我的直觉告诉我这只是一个简单的原始类型数组,所以它会自动释放。我很怀疑,因为在 C 中你不能假设任何东西都会被自动释放。

最佳答案

在这种情况下,您不需要免费调用电话。值“str”是一个基于堆栈的值,当退出该特定方法/范围时将被清除。

您只需要对通过 malloc 显式创建的值调用 free。

关于c - 超出范围是否释放了(字符)数组的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1335230/

相关文章:

c - 通过 const 限定符保护变量的数据是没有用的!!!?

javascript - 为什么在函数外部声明变量并在循环中赋值比局部变量使用更多内存?

c++ - 在 C++ 中高效使用 bool 值 true 和 false?

c++ - 释放内存需要时间吗?

c - 为什么我的结构(在头文件中声明)在 gcc 编译的 c 文件中无法被识别?

我可以用新代码重新编译文件吗?

java - 对不同数据类型数组中一种数据类型的对象使用接口(interface)方法? java

java - 连接 2 个数组的输出不符合预期

arrays - Swift - 获取数组中的第一项,并返回元素和索引

c - 让 fgets 跳过特殊字符