堆、栈以及静态区域的区别

2019-03-01  本文已影响0人  哈豊玛奥

一、内存基本构成
可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。

二、使用时需注意的规则

三、堆与栈的讨论

1、管理方式:
2、系统响应:
3、空间大小:
4、碎片问题:
5、生长方向:
6、分配方式:
7、分配效率:

四、为什么要把堆和栈区分出来

1、从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这种隔离、模块化的思想,使得处理逻辑更为清晰
2、使得中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象
3、使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可

栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的

4、面向对象就是堆和栈的完美结合。

对象的属性其实就是数据,存放在中;而对象的行为(方法),就是运行逻辑,放在中。我们在编写对象的时候,其实即编写了数据结构,也编写的处理数据的逻辑

上一篇 下一篇

猜你喜欢

热点阅读