new_delete

new delete是c++的关键字。

new在堆上分配内存,分配类型:基础类型、数组类型、对象。

new delete是操作符,不是函数。

int *p1 = new int;   *p1 =10;
int *p2 = new int(10); //分配内存的同时,初始化为10
int *arry = new int[4];  //int arry[4];
class A
{
     public:
          A (int x,int y):a(x),b(y){}
     private:
          int a;int b;
}

A *p3 = new A(1,2);  //new一个新的对象(分配空间),然后将指针p3指向这个对象空间。
delete p1;       //释放变量
delete [] arry;  //释放数组

 

new操作符,自动会调用构造函数,delete操作符也会自动去调用析构函数。这是与malloc,free的区别。

 

问题:malloc申请的空间能用delete释放吗?new的空间能用free释放吗?

基础类型:它们是可以的。

数组类型:它们也是可以的。(这里也是指的是基础数据类型数组)

对象类型:使用free释放,不会调用析构函数,编译程序不会报错。

 

posted @ 2016-10-17 14:23  e-data  阅读(96)  评论(0)    收藏  举报