内存管理
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只关心内存大小
以上是关于内存管理的主要内容,如果未能解决你的问题,请参考以下文章