NoteDeep

C语言内存布局规律:

丨 局部变量
丨 局部变量
丨 动态申请的内存空间
丨 全局变量(未初始化)
丨 静态变量(未初始化)
丨 静态变量(初始化)
丨 全局变量(初始化)
丨 全局变量(初始化)
丨 字符串常量
丨 字符串常量
丨 函数


丨 命令行参数和环境变量
丨 一一一一一一一一一一
丨 栈
丨 -------------------------
丨 未使用的内存空间
丨 -------------------------
丨 堆
丨 一一一一一一一一一一
丨 bss段
丨 一一一一一一一一一一
丨 数据段
丨 一一一一一一一一一一
丨 代码段

代码段

指用来存放程序执行代码的一块内存区域,在运行前就已经确定,通常属于只读,也有可能包含一些只读的常数变量,例如字符串常量。
函数名是常量

数据段

通常存放已经初始化的全局变量和局部静态变量

BSS段

通常用来存放程序中未初始化的全局变量和局部静态变量,在程序运行前将自动初始化为0。

用于存放进程运行中被动态分配的内存段,大小不固定,可以动态扩展或缩小
malloc等函数将内存动态添加到堆上
free等函数将内存从堆中剔除

是函数执行的内存区域
通常和堆共享一片区域
存放局部变量,函数参数,函数返回值……
函数的参数入栈顺序是从右向左

堆和栈

发展方向:
堆和其他区段一样,都是从低地址向高地址发展
栈是由高地址向低地址发展

大端小端:

小端:一般常见的操作系统
大端:通讯协议
不同的应用程序存储方式也由区别
Adobe PS -- 大端
BMP -- 小端
GIF -- 小端
JPEG -- 大端
MacPaint -- 大端
RTF -- 小端

大端:正序——高位放在前侧(低地址),低位放在后侧(高地址)
小端:逆序——高位放在后侧(高地址),低位放在前侧(低地址)





评论列表

    C语言内存布局规律:
    代码段
    数据段
    BSS段
    堆和栈
    大端小端: