一个程序运行后在内存中会划分成不同的内存段(一般为50或60),其中与编程相关有:
代码段:二进制指令,只读权限
只读段:用来存储常量,一旦被修改就会产生段错误
全局段(data):存储全局变量
静态数据段(bss):程序运行后这段内存会被清理成零
栈:数据先进后出,操作系统自动管理,内存的申请和释放都是自动的
堆:数据无规则的堆在一起,由程序员自己管理(手动申请、释放)
注: gcc 编译后 , size a.out 可看各段数据 (因为局部变量存储在栈里面,所以看不到)
一个程序运行后在内存中会划分成不同的内存段(一般为50或60),其中与编程相关有:
代码段:二进制指令,只读权限
只读段:用来存储常量,一旦被修改就会产生段错误
全局段(data):存储全局变量
静态数据段(bss):程序运行后这段内存会被清理成零
栈:数据先进后出,操作系统自动管理,内存的申请和释放都是自动的
堆:数据无规则的堆在一起,由程序员自己管理(手动申请、释放)
注: gcc 编译后 , size a.out 可看各段数据 (因为局部变量存储在栈里面,所以看不到)