C 没有垃圾收集,因此每当我们使用 malloc/calloc/realloc 分配内存时,我们需要在使用结束后手动释放它。 C 如何处理其他数据类型(如 int、char 等)的变量?分配给这些变量的内存是如何释放的?
最佳答案
这取决于。如果您使用 malloc/calloc/realloc
分配任何这些数据类型,您仍然需要释放
它们。
另一方面,如果在函数内部声明了一个变量,则它们被称为自动变量,只要该函数结束,它们就会被自动收集。
这里的重点不是数据类型本身,而是存储位置。 malloc/calloc/realloc
在堆中分配内存,而自动变量(在函数内部声明的变量)在堆栈中分配em>.
堆完全由程序员管理,而栈的工作方式是当一个函数结束时,栈帧会收缩,并且占用该帧的每个变量都会在另一个函数结束时自动覆盖被称为。
要更好地了解这些,请查看 the memory layout of a C program .其他有用的引用可能是 free(3)
man page和 Wikipedia page for Automatic variables .
希望这对您有所帮助!
关于c - 在 C 中释放其他变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22143061/