本篇博客内容摘自《经典C面试真题精讲》
C语言的内存分配区域主要有以下五个:
1.栈区:在执行函数时,函数内部局部变量(不包含static变量)、函数返回值的存储单元在栈上创建,函数执行结束时这些存储单元自动被释放;
2.堆区:即动态内存分配,程序在运行的时候用malloc(calloc、realloc等)申请的内存,程序员自己负责用free释放;
3.静态存储区:该内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,此处存放全局变量、static变量;
4.常量区:整形常量、浮点型常量、字符型常量及字符串常量都分配在文字常量区,程序结束后由系统释放;
5.代码区:存放整个程序的代码,数据和代码是分开的。