内存管理 – 基于堆栈的内存分配

参考
Stack Based Memory Allocation,它被声明为“……每个线程都有一个保留的内存区域,称为它的堆栈.当一个函数执行时,它可能会将一些状态数据添加到堆栈顶部;当函数执行时退出它负责从堆栈“和”中删除该数据…当函数退出时,堆栈中的内存自动且非常有效地回收“

第一个引用的句子说当前线程负责,第二个引用的句子说它自动完成.

问题1:是自动完成还是由当前运行的线程完成?

问题2:如何在堆栈中释放内存?

最佳答案 问题1:通过自动(并且非常有效)它们意味着仅通过移动存储器指针(从堆栈顶部切割),所有在那里使用的存储器都被回收.不需要复杂的垃圾收集.

问题2:堆栈只是一个由开始和结束指针分隔的连续内存块.指针之间的所有内容都属于堆栈,超出结束指针的所有内容都被视为空闲内存.您可以通过移动结束指针(堆栈顶部)来分配和释放内存.堆上的事情要复杂得多,内存使用是碎片化的.

点赞