zoukankan      html  css  js  c++  java
  • EC笔记:第三部分:16成对使用new和delete

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

    举个例子,很多人动态分配的资源,在使用之后,往往直接调用了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去定义一个数组类型,而是使用标准库提供的容器。
  • 相关阅读:
    poj1459(多源点网络流)
    poj 2480
    poj1850和poj1496(组合数)
    poj3252(组合数)
    hdu1452(逆元)
    因子和与因子个数
    poj 2478(欧拉函数打表)
    p3807(lucas定理)
    F-有趣的数字(组合数+逆元)
    《Java并发编程的艺术》Java并发机制的底层实现原理(二)
  • 原文地址:https://www.cnblogs.com/SkyFireITDIY/p/6220716.html
Copyright © 2011-2022 走看看