内存模型

一, 结构(linux)

内存从高向下,

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

1. 栈

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

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

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

3. 全局/静态存储区

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

4. 代码段

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

二,内存生长方向

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

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

三,内存存储类型

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

四,寄存器类型

########################################################
#                 #                                    #
# 优化(写时复制)#  volatile(直接写入内存, 原子操作) #
#                 #                                    #
########################################################  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容