C语言的各种区
区域 | 存储内容 | 分配 / 释放方式 | 生命周期 | 典型问题 |
---|---|---|---|---|
栈区 | 局部变量、参数、返回地址 | 自动(函数调用 / 返回) | 函数调用期间 | 栈溢出 |
堆区 | 动态分配数据 | 手动(malloc/free) | 从分配到释放 | 内存泄漏、野指针 |
全局 / 静态区 | 全局变量、静态变量 (静态变量是被 | 编译时分配,程序结束释放 | 整个程序运行期间 | 无(但占用内存久) |
常量区 | 字符串常量、const 常量 (const int a,将变量修饰为常量) | 编译时分配,程序结束释放 | 整个程序运行期间 | 修改常量导致崩溃 |
代码区 | 机器指令 | 编译时确定,程序结束释放 | 整个程序运行期间 | 无(只读保护) |