【c++回顾】内存管理机制

it2022-05-05  213

在这个模型中,我们将会把一个 C++ 程序在运行的时候所占据的内存空间,分成以下四个部分:

栈区( Stack )堆区( Heap )全局区/静态区( Global/Static )常量区( Constant )

在 C++ 程序的内存空间中,我们在代码中声明的局部变量,以及函数的形式参数,都保存在栈区中——这部分内存在程序运行的时候会自动分配,而在不需要的时候也会自动释放,并不需要程序员自己去手动维护。

而我们使用new运算符,或者 C 语言中的malloc函数进行动态内存分配之后,系统为我们划分的内存空间,就来自于堆区。因为程序自己并不知道这些动态分配的内存到什么时候会派不上用场,所以程序并不会对这部分已经分配的内存做任何处理。

对于全局变量,以及我们的后续课程中要讲到的静态( static )变量,其保存在内存中的全局/静态区( Global/Static )——全局变量和静态变量是存储在同一块内存空间中的。我们可以简单地认为,程序启动之后,全局/静态变量就保存在这里,而程序结束之后,对应的内存空间将会自动释放。

最后是常量( Constant )区——实际上在实际的程序中并不存在这样一个区域,这里只是为了让大家方便理解。我们可以简单地认为,所有的常量(以const开头)都存放在一起——这些区域不可释放。

以上来自计蒜客 ?


最新回复(0)