内存中的栈和堆,与数据结构中栈和堆是两码事。
内存中分为栈,堆,静态存储区,程序代码区。
1. 空间上
栈:空间小,远小于堆内存,所以常有栈溢出错误。主要存放 函数地址,函数参数,局部变量等。
堆:空间大,主要存放new出来的对象和malloc申请的空间
2. 释放方式上
栈:由系统自动申请和回收,只由单线程使用
堆:由程序分配,使用new或malloc申请,使用free或delete释放。不手动释放,程序结束后系统会自动回收
3. 访问速度上
栈:速度快,是连续内存,集中在内存块附近
堆:速度慢,因为堆内存是不连续的