C语言的内存管理就像给你的程序分配一块"自留地",你可以自由耕种,但也必须自己负责除草施肥。这种"自己动手,丰衣足食"的特性让C语言既强大又危险。
内存管理的四大领地
C程序运行时使用的内存分为几个重要区域:
1.代码区:
存放编译后的机器指令(只读)
2.全局/静态区:
存放全局变量和静态变量
-
data段:已初始化的全局/静态变量
-
bss段:未初始化的全局/静态变量(默认置0)
3.栈区(stack)
自动管理,存放局部变量和函数调用信息
-
快速分配释放
-
大小有限(通常几MB)
4.堆区(heap)
程序员自主管理的内存池
-
手动分配释放
-
空间大但容易产生碎片
内存管理三剑客
malloc - 内存分配大师
void* malloc(size_t size);
// 分配指定字节的未初始化内存
-
成功返回内存首地址,失败返回NULL
-
不初始化内存内容(可能是随机值)
calloc - 洁癖版malloc
void* calloc(size_t num, size_t size);
// 分配num*size字节并初始化为0
-
适合数组分配
-
自动清零,但比malloc稍慢
C语言内存管理:领地、风险与应对

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



