系统的内存分配

系统的内存分配问题一直都是一块牛皮癣,今天花了点时间终于把它搞懂了。
对于系统来说,其内存一般都会分为五大部分,下面将会分别来讲。

1.栈区(stack)

1.栈区是由编译器自动分配,一般存放函数的参数值、局部变量的值。
2.其操作方式类似数据结构的栈,遵循先进后出原则。
3.速度快,效率高。

2.堆区(heap)

1.一般由程序员分配释放,若程序不释放,程序结束时间可能由操作系统回收
2.注意:与数据结构中的堆是两回事,分配方式类似链表
3.真正干活的,速度慢,效率低

3.全局区(静态区:static)

1.全局变量与静态变量储存在一起
2.程序结束由系统释放

4.文字常量区

常量字符串放在这里,程序结束由系统释放

5.程序代码区

存放函数体的二进制代码

就是这五部分啦,然后为了更好的区分前三种,我又做了一张图,能过更清晰的将其位置进行区分。

系统的内存分配