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.