内存布局详解
// 内核区
// 保存进程环境变量区
// 保存命令行参数区:int main(int argc,char** argv);
// 栈区
1. 由编译器分配和释放
2. 存放的值有:局部变量、形参、const修饰的局部常量
// 共享库+C标准库+系统IO函数
// 堆区
// 全局/静态区(读写段)
1. 该区的数据在程序结束后由OS管理和释放
2. 该区分段
- .rodata段:只读数据段
- .data段:已初始化的数据段
- .bbs段:未初始化的数据段
3. 该区存的值有:字符串常量、const全局常量、静态变量、其他常量
// 文字常量区(只读段)
// 程序代码区(只读段)
1. 该区是共享的,对于频繁被执行的代码,只需保存一份在内存中即可
2. 该区是只读的,防止程序意外修改了它,故被设置为只读
3. 程序运行前就存在的区,用于存放二进制代码,由操作系统管理
// 0-4k保护区