堆栈和堆之间有什么区别?
答
程序分为4个部分:堆栈,数据,代码,堆。
这不是一个准确的起点。
一个程序被分成具有各种属性的程序段。
- 只读/不执行(你调用数据)
- 只读/执行(你调用的代码)
- 读/写(这既包括堆和栈)。
堆栈只是一个内存块,使用push和pop操作分配和释放。分配和释放通常使用堆栈指针寄存器实现。
堆是一个或多个内存块,可以按任何顺序和各种大小分配和释放。操作系统对程序堆没有任何知识。由代码链接的库进行管理(尽管操作系统会有自己的堆)。操作系统只是看到这些内存块。