程序内存分区

张开发
2026/4/19 22:50:11 15 分钟阅读

分享文章

程序内存分区
文章目录栈区Stack堆区Heap全局 / 静态区Global/Static常量区Constant代码区Code / Text总结程序运行时操作系统会将进程的内存空间划分为5 个核心区域每个区域用途固定、权限不同专门存放不同类型的数据这是编程尤其是 C/C/Java/Python 底层的核心基础。栈区Stack特点自动分配、自动释放速度最快空间小存放内容函数的局部变量函数参数函数调用返回地址生命周期函数执行时创建函数结束自动销毁例子voidfunc(){inta10;// a 在栈区}堆区Heap特点手动申请、手动释放或 GC 回收空间大速度慢存放内容动态分配的内存new/malloc大对象、不确定生命周期的数据生命周期手动控制直到释放 / 程序结束例子int*p(int*)malloc(4);// 堆区全局 / 静态区Global/Static也叫静态存储区特点程序运行期间一直存在默认初始化为 0存放内容全局变量static 修饰的静态变量例子intg_val;// 全局变量 → 全局区staticints_val;// 静态变量 → 全局区常量区Constant特点只读不能修改程序结束释放存放内容字符串常量const 修饰的只读常量例子//放在常量区char*strhello;// hello 在常量区str[0]H;// ❌ 崩溃常量区不可写//放在栈charstr[]hello;str[0]H;// ✅ 没问题//放在堆char*strnewchar[6];strcpy(str,hello);str[0]H;// ✅ 没问题代码区Code / Text特点只读存放程序执行指令存放内容编译后的二进制机器码函数体代码总结分区存放内容分配方式生命周期读写栈区局部变量、参数自动函数内读写堆区动态对象手动手动控制读写全局区全局 / 静态变量自动整个程序读写常量区字符串、常量自动整个程序只读代码区函数代码自动整个程序只读

更多文章