码迷,mamicode.com
首页 > 其他好文 > 详细

内存管理

时间:2017-04-30 23:06:58      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:释放   函数参数   没有   自动调用   构造   引用   ++   span   bsp   

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只关心内存大小

  

内存管理

标签:释放   函数参数   没有   自动调用   构造   引用   ++   span   bsp   

原文地址:http://www.cnblogs.com/zgen1/p/6790448.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!