虚拟内存
进程在运行时,所操作的内存就是虚拟内存,每个进程之间的虚拟内存互相独立,通过 MMU 内存管理技术再映射到物理内存中,同时,虚拟内存空间块分为:
栈内存
栈内存在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配...在调用栈结束后将会自动回收
#include
#include
void test();
int main() {
test();
test()...语言中,通过 malloc 等内存分配函数进行分配新的内存空间,定义新的变量
通过 free 等回收函数进行回收不需要的变量
代码示例:
#include
#include<stdlib.h...c的地址释放后,d重新分配得到了原来c的地址
垃圾回收原理
所谓垃圾回收,就是找到 程序 运行之后,不需要的变量,将其回收掉,例如在上面的代码中,test函数执行完毕后,
所分配的栈内存(自动回收),...(将 B 挂在 A 下游,B 必须被标记为灰色)
由于栈空间容量小,响应速度快,函数调用弹出频繁,所以插入屏障在栈对象操作中不使用,仅在堆对象中使用
所以在回收完堆对象时,栈空间对象需要进行一次 停止程序运行