Cocos2d-x开发中C++内存管理
作者:网络转载 发布时间:[ 2015/1/29 14:36:16 ] 推荐标签:C++ 软件开发 内存管理
2、new和delete使用
与malloc和free不同,new和delete不是函数库,而是C++的运算符。new运算符可以完毕创建对象全部步骤(即:第一步,为对象分配内存,第二步,调用构造函数初始化内存),它也会调用构造函数。实例代码:
MyObject *obj = new MyObject();
构造函数可以重载,依据用户传递的?数列表,决定调用哪个构造函数进行初始化对象。
new运算符反操作运算符是delete,delete先调用析构函数,再释放内存。实例代码:
delete obj;
obj是对象指针,obj仅仅能释放new创建的对象,不能释放有malloc创建的。并且?用delete释放后的对象指针,须要obj=NULL以防止“野指针”。
提示 一种情况是,指针变量没有被初始化,它的指向是随机的,它会乱指一气,并非为NULL。假设使用if语句推断,则觉得是有效指针。另外情况是,指针变量被free或者delete之后,它们仅仅是把指针所指的内存给释放掉,但并没有把指针本身清除,此时指针指向的是“垃圾”内存。假设使用if语句推断,也会觉得是有效指针。“野指针”是非常危急的,良好的编程习惯是,这两种情况下都须要将指针设置为NULL,这是避免“野指针”的方法。
使用new和delete分配和释放内存的实例代码例如以下:
#include <iostream>
using namespace std;
class MyObject
{
public :
MyObject(){
cout << "call constructor." << endl;
}
~MyObject(){
cout << "call destructor." << endl;
}
void initialize(){
cout << "call initialization." << endl;
}
void destroy(){
cout << "call destroy." << endl;
}
};
int main(){
MyObject *obj = new MyObject(); // 申请动态内存
//TODO
delete obj;
obj = NULL;
return 0;
}
相同是MyObject类,?用是new分配内存,delete释放内存。程序执行会调用构造函数和析构函数。执行结果例如以下:
call constructor.
call destructor.
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11