内存模型

2018-10-29  本文已影响0人  陈道乐

一, 结构(linux)

内存从高向下,

#################
       栈
#################
堆(自由存储区)
#################
 全局/静态存储区
#################       
代码区(机器指令)

1. 栈

由系统管理, 栈内存只在程序运行时出现,在函数内部使用的变量、函数的参数以及返回值将使用栈空间,栈空间由编译器自动分配和释放。其操作方式类似于数据结构中的栈。

2. 堆(实现自由存储区)

只有通过malloc, new 分配的空间才会在堆上, new 可以由malloc来实现,malloc 和 new 创建的对象是在自由存储区山的,

3. 全局/静态存储区

该区域在C语言中区分为两个:未初始化, 初始化; 在C++里面是不区分的,只初始化一次

4. 代码段

存放代码的数据的地方, 只读

二,内存生长方向

1.栈的地址是由高向低增长的

2.堆得地址增长方向是由低到高向上增长的

三,内存存储类型

####################
#      #  已初始化 #
# 只读 #############
#      #  未初始化 #
####################

四,寄存器类型

########################################################
#                 #                                    #
# 优化(写时复制)#  volatile(直接写入内存, 原子操作) #
#                 #                                    #
########################################################  
上一篇 下一篇

猜你喜欢

热点阅读