内存管理

Posted TO_ZG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理相关的知识,希望对你有一定的参考价值。

1.C++程序的内存格局分四个区: 1.全局数据区/静态区/字符串常量:全局变量、进态数据、常量

                 2.代码区:所有类成员函数代码、非成员函数代码

                                             3.栈区/堆栈:为运行函数而分配的局部变量、函数参数、返回数据、返回地址

                                             4.堆区:malloc/free或new delete,从堆中分配和释放内存块

2.使用堆空间的情况: 1.直到运行时才能知道需要多少对象空间

                             2.不知道对象的生存期到底有多长

                             3.直到运行时才知道一个对象需要多少内存空间

3.new/delete是C++的运算符,它们都可用于申请动态内存和释放内存。 构造函数可以有参数。所以在new后面的类类型也可以有参数。 类名 *变量名 = new 类名(....);右边在堆中开辟空间存放的是类的对象,左边在栈中开辟空间存放的是变量,这个变量是一个地址,它指向的是堆空间的地址。 new数组:类名 *变量名 = new 类名[元素个数]; 从堆中分配对象数组时,只能调用无参的默认构造函数,没有默认的构造函数的类,不能分配对象数组。

4.堆对象析构是在释放堆对象语句delete执行之时。 局部对象在该对象退出作用域时自动调用析构函数,但在堆对象中作用域是整个程序的生命周期,所以除非程序运行完毕,否则堆对象作用域不会到期。 delete 变量名;或delete[] 变量名; 变量名 = NULL;

5.形参是引用时,实际上传的是地址,即指向的地址

   malloc只关心内存大小

  

以上是关于内存管理的主要内容,如果未能解决你的问题,请参考以下文章

ION 内存管理

:内存管理 -- 内存管理的概念

Spark内存管理详解(下)——内存管理

RT-Thread--内存管理

内存管理 浅析 内存管理/内存优化技巧

内存管理相关API列表