C语言跟C++语言存储区分类大体一样,但仍有些细微差别。
一、在C语言中,内存区域可以分为以下5类
1、栈,由编译器负责自动分配与释放,一般在函数体类定义的局部变量与非main函数参数都放在栈内;
2、堆,由程序员主动分配和释放,若程序员不释放,则只会在程序退出的时候被系统释放,用malloc、calloc、realloc等函数申请到的内存区域放在堆上,需要使用free函数释放相应内存,否则只有在程序退出时才会被系统所回收;
3、全局/静态存储区,专门存放全局变量和静态变量的区域,它还可以再细分为两个区域,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域, 程序退出时才释放,例如在函数体外定义的全局变量和static修饰的变量;
4、常量存储区,专门用于存放常量的区域, 程序退出时才释放,例如形如“cpplive”之类的字符串。 阅读全文