kal*_*esh 14 language-agnostic heap stack garbage-collection memory-management
我阅读了很多关于垃圾收集的文章,几乎所有的文章都讲述了堆内存.所以我的问题是"垃圾收集收集堆栈内存或堆内存或两者兼备".
Ara*_*raK 18
它收集堆内存.通常,当执行路径到达范围的末尾时,会自动收集堆栈内存.例如:
void fun()
{
int n; // reservation on the stack as part of the activation record
...
} // returning the stack pointer to where it was before entering the scope
Run Code Online (Sandbox Code Playgroud)
事实上,在像C++这样的语言中,堆栈分配的变量称为auto变量.
Fra*_*itt 10
堆内存.
垃圾收集是一种释放不再使用的内存的方法.有时"不再使用"部分是棘手的.使用堆栈,只要函数返回,我们就可以确信(程序员错误除外)局部变量不再被使用,因此它们几乎在每个语言/运行时都会被自动释放.
堆栈被称为"堆栈",因为它是一个内存区域,由"堆栈策略"管理,即LIFO(后进先出).如果堆栈上的分配没有以"堆栈方式"完成,则它不会被称为堆栈而是堆.
垃圾收集是为了解决在堆上分配事物的问题而发明的,即无法预测哪些部分将首先被释放.GC用于堆栈管理不足的内存分配问题.