C 语言的内存模型

  1. 栈区(stack):

    栈区主要存放函数的参数值、局部变量的值,是由编译器进行自动的分配和释放的,通常在函数执行结束后就随之释放了,这种操作方式类似于数据结构中的栈。

  2. 堆区(heap):

    堆区就是通过new、malloc、realloc分配的内存块,编译器不管理他们的释放,有应用程序去负责释放。如果应用程序没有释放掉,操作系统会自动回收。

  3. 静态区:

    全局变量和静态变量是存储在静态区的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。在程序结束后,系统自动释放。

  4. 常量区:

    常量存放在常量区,不允许修改。

  5. 代码区:

    代码区存放函数的二进制代码。