内存,顾名思义是内部存储数据的地方。
内存大概分为两部分,一部分是只能读的数据部分;另一部分是能读又能读写的地区。
关于第一部分,一般都是存放计算机硬件信息,以及管理硬件的bios。
这一部分不是我们重点讨论的地方。
第二部分,是程序员经常打交道的地方。这一部分其实也要分为几块,相对来说这些分为代码和数据。
代码区域存放一些逻辑;而数据部分是最关键的,数据分为变量和常量。
而变量又要分为局部变量和全局变量。
由于全局变量的大小是可预知的,所以其区域跟常量区以及静态变量分作一块。
堆栈,是我们搞混的区域。看文字上的理解,就知道堆是没规则的乱放的,而栈是有规则的堆放。众所周知,有规则的速度快,没规则的空间大。
所以栈区经常放的是系统可预知,遵守规则的变量,一般是函数内的局部变量。变量随着函数的执行完毕,而由系统自动回收。
故,不难理解,堆区那帮家伙是自由派,自由归自由,可是不听话了,还是要受到惩罚的,比如会发现内存越来越少等。这一部分由我们程序员自己掌握,但是一定要记得new和delete,然后避免野指针。
所以我们经常要打交道的地方分为4个主要区域,代码区,静态数据区,动态堆区,局部栈区。