这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » New/delete的使用要点

共2条 1/1 1 跳转至

New/delete的使用要点

菜鸟
2012-08-25 11:02:18     打赏

运算符new使用起来要比函数malloc()简单得多,例如:

     Int *p1=(int *)malloc(sizeof(int)* length);

     Int *p2=new int[length];

这是因为new内置了sizeof、类型转换和类型安全检查功能。对于非内部数据类型的对象而言,new在创建动态对象的同时完成了初始化工作。如果对象有多个构造函数,那么new的语句也可以有多种形式。例如:

 Class Obj{

     Public:

       Obj();         //默认构造函数

       Obj(int X);    //带一个参数的构造函数

     ……

}

 Void Test(void)

 {

  Obj*a=new Obj;

  Obj*b=new Obj(j);     //初值为1

 ……

    Delete a;

    Delete b;

}

如果用new创建对象数组,那么只能使用对象默认构造函数。例如:

  Obj*objects=new Obj[100];   //创建100个动态对象

不能写成:

   Obj*objects=new Obj[100](1); //创建100个动态对象的同时赋初值1

在用delete释放对象数组时,留意不要丢了符号‘[]’。例如:

  Delete[]objects;           //正确的用法

Delete objects;           //错误的用法

后者相当于delete objects;漏掉了另外99个对象。

1.  不论是何种类型,new/delete和new[]/delete[]总是应该正确配对使用。因此,没有任何一种数据类型。对于其动态创建的数组来说delete p和delete[]p是等价的。

2.   多次delete一个不等于NULL的指针会导致运行时错误,但是多次delete一个NULL指针没有任何危险,因为delete运算符会首先检查这种情况,如果指针为NULL,则直接返回。
信息来源:http://www.lirenedu.org/index.php?ack=xinwen&id=1180




关键词: delete     使用     要点    

高工
2012-08-25 14:38:03     打赏
2楼
应该注意和学会的细节问题

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]