c - 在 C 中释放其他变量类型

标签 c pointers garbage-collection malloc

C 没有垃圾收集,因此每当我们使用 malloc/calloc/realloc 分配内存时,我们需要在使用结束后手动释放它。 C 如何处理其他数据类型(如 int、char 等)的变量?分配给这些变量的内存是如何释放的?

最佳答案

这取决于。如果您使用 malloc/calloc/realloc 分配任何这些数据类型,您仍然需要释放它们。

另一方面,如果在函数内部声明了一个变量,则它们被称为自动变量,只要该函数结束,它们就会被自动收集。

这里的重点不是数据类型本身,而是存储位置malloc/calloc/realloc中分配内存,而自动变量(在函数内部声明的变量)在堆栈中分配em>.

堆完全由程序员管理,而栈的工作方式是当一个函数结束时,栈帧会收缩,并且占用该帧的每个变量都会在另一个函数结束时自动覆盖被称为。

要更好地了解这些,请查看 the memory layout of a C program .其他有用的引用可能是 free(3) man pageWikipedia page for Automatic variables .

希望这对您有所帮助!

关于c - 在 C 中释放其他变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22143061/

相关文章:

c - 当我尝试声明包结构时出错?

c - 声明结构以避免混合声明和代码

php - 在 PHP 中,如何测量请求使用硬盘的时间?

c - 如何访问指向在另一个结构中声明的结构的指针?

c - *(q + i * col + j)在此C程序中如何工作?

c - c中的最低和最高内存地址?

C - 将 X 长度的字符串拆分/存储到结构数组中

java - 这会导致java内存泄漏吗?

java - 为什么调用 System.gc() 是不好的做法?

java - 运行时常量池GC收集