这篇文章时对c内存分配的一些思考,主要解释以下几点问题:
1. const 是不是存放在常量区中???
2. 全局变量与常量区的关系???
3. 为什么指针可以改变局部const数组内容而不能改变其局部const的内容???
基础知识:
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的
全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另
一块区域。 - 程序结束后由系统释放。
4、文字常量区 —一般常量就是放在这里的。不能被修改。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
着重讲下const 是不是存放在常量区里???。
对于局部的const 非static常量,不放在常量区里。而全局的const 放在常量区里。
全局const:
如果const用在全局或者使用