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

EC笔记:第三部分:16成对使用new和delete

时间:2016-12-26 00:36:48      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:无法   bsp   []   应该   情况   let   namespace   忠告   family   

我们都知道,申请的资源,使用完毕后要释放。但是这个释放动作,一定要注意。

举个例子,很多人动态分配的资源,在使用之后,往往直接调用了delete,而不管申请资源的时候用的是new还是new[]。

如下:

#include <iostream>

using namespace std;

 

int main(){

    int *p;

    p=new int[256];

 

    //某些操作

 

    delete p; //错误,和分配资源时的操作不匹配

    

}

但是有时候,我们感觉写的代码是没有问题的,然而却犯了一些很隐晦的错误。比如以下代码:

#include <iostream>

using namespace std;

 

int main(){

    typedef int MyArray[256];

    MyArray *p=new MyArray;

 

    //一些操作

    

    delete p; //错误,此时应该使用delete[]

    

}

 

当我们使用typedef的时候,往往无法看清楚,原有的类型是什么。

不过这个情况也很好避免,在c++中,我们合理的使用vector,string等容器,几乎就可以避免数组的使用。而且尽量不要用typedef去定义一个数组类型。

忠告:

  1. 成对地使用new和delete
  2. 不要用typedef去定义一个数组类型,而是使用标准库提供的容器。

EC笔记:第三部分:16成对使用new和delete

标签:无法   bsp   []   应该   情况   let   namespace   忠告   family   

原文地址:http://www.cnblogs.com/SkyFireITDIY/p/6220716.html

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