1. 内存分配的几种方式
1.1. 1.栈上分配
在执行函数时,局部变量的内存都可以在栈上分配,函数结束时会自动释放;栈内存的分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限
1.2. 2.堆上分配
就是那些由malloc分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般malloc就要对应一个 free。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收
1.3. 3.自由存储区
从自由存储区分配:如果说堆是操作系统维护的一块内存,那么自由存储区就是C++中通过new和delete动态分配和释放对象的抽象概念。需要注意的是,自由存储区和堆比较像,但不等价。
c++的new 一般在自由存储区,自由存储区是抽象层,看平台的实现,有的平台是用堆实现,有的不是。
1.4. 4.常量存储区
从常量存储区分配:特殊的存储区,存放的是常量,不可修改;
1.5. 5.全局/静态存储区
从全局/静态存储区分配:全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量和静态变量又分为初始化的和未初始化的,在C++里面没有这个区分了,它们共同占用同一块内存区,在该区定义的变量若没有初始化,则会被自动初始化,例如int型变量自动初始为0