一, 结构(linux)
内存从高向下,
#################
栈
#################
堆(自由存储区)
#################
全局/静态存储区
#################
代码区(机器指令)
1. 栈
由系统管理, 栈内存只在程序运行时出现,在函数内部使用的变量、函数的参数以及返回值将使用栈空间,栈空间由编译器自动分配和释放。其操作方式类似于数据结构中的栈。
2. 堆(实现自由存储区)
只有通过malloc, new 分配的空间才会在堆上, new 可以由malloc来实现,malloc 和 new 创建的对象是在自由存储区山的,
3. 全局/静态存储区
该区域在C语言中区分为两个:未初始化, 初始化; 在C++里面是不区分的,只初始化一次
4. 代码段
存放代码的数据的地方, 只读
二,内存生长方向
1.栈的地址是由高向低增长的
2.堆得地址增长方向是由低到高向上增长的
三,内存存储类型
####################
# # 已初始化 #
# 只读 #############
# # 未初始化 #
####################
四,寄存器类型
########################################################
# # #
# 优化(写时复制)# volatile(直接写入内存, 原子操作) #
# # #
########################################################
网友评论