跳至主要內容

11.内存模型

约 370 字大约 1 分钟

代码区

代码区存储了程序的机器代码,即程序的执行代码。
代码区的内存分配是在程序加载到内存时完成的,且其内容是只读的,不能被修改。

常量区

常量区存储了程序中定义的常量,如字符串常量等。
常量区的内存分配是在程序启动时完成的,且其内容是只读的,不能被修改。

全局变量区

全局变量区存储了程序中定义的全局变量和静态变量。
全局变量在程序的整个生命周期内存在,它们的内存分配是在程序启动时完成的。

栈区

栈是一种线性的数据结构,它是一种具有后进先出(LIFO)特性的容器。
在函数调用时,局部变量、函数参数以及函数调用的返回地址等都存储在栈中。
栈的内存分配和释放是自动的,由编译器和运行时系统负责管理。

堆区

堆是一种动态分配的内存区域,用于存储动态分配的数据和对象。
在C语言中,可以使用 malloc()、calloc()、realloc() 函数来动态分配堆内存,并使用 free() 函数来释放堆内存。
堆的内存分配和释放需要显式地进行管理,程序员负责分配和释放堆内存。