一句话回答
区别:
堆Heap:用于存放对象,还有管理 malloc 出来的内存空间
栈Stack:则是用于存放局部变量和函数参数
各自由谁进行管理?
堆区由开发者手动分配和释放
栈区则是由系统自动分配和释放
读取速度
那当然是栈区的读得快啦,因为栈区对象可以直接通过寄存器访问到数据,不像堆区的对象,得先拿到栈区的内存指针,然后才能访问实际的内容。
App 运行时,堆栈如何生长?
栈区往下生长,堆区在中间,往上生长
还有哪些分区?
- 全局区:存放静态变量、全局变量
- 常量区:编译时分配的内存空间,比如字符串常量
- 代码区:编译好的二进制代码