zoukankan      html  css  js  c++  java
  • 关于new和malloc以及delete和free能否够混用

    /*
    *1》当申请的空间是内置类型时,delete和free能够混用
    *2》当申请的空间是自己定义类型时,
    *       1>若没有析构函数。delete和malloc能够混用。有[]和没有[]都同样
    *                    2>若申请的空间有析构函数时,malloc申请的空间能够用delete和free释放,可是用delete释放时不能加[]
    *                    3>若申请的空间有析构函数时,new申请的空间不能用free释放,能够用delete释放。可是释放时必须加上[]
    */      
    #if 0
    int main()
    {
    int a = 10;
    int b = 20;
    int *p = (int *)malloc(sizeof(int)*10);
    int *p1 = new int[10];

    free(p);
    //free(p1);
    //delete p;
    delete p1;


    return 0;
    }
    #endif


    #if 1


    class Test
    {
    private:
    int ma;
    public:
    Test(int x=0):ma(x)
    {}
    ~Test()
    {


    }
    void fun()
    {
    cout<<"Test::fun"<<endl;
    }
    };


    int main()
    {
    Test *p1 = (Test*)malloc(sizeof(Test)*10);
    Test *p2 = new Test[10];


    //free(p1);
    //free(p2);
    //delete p1;
    //delete ((int *)p1-1);
    delete ((int *)p2-1);
    //delete []p2;


    return 0;
    }
    #endif
  • 相关阅读:
    分治
    #include<algorithm>
    c++标准模板库的使用
    mysql_day03
    mysql_day02
    mysql_day01
    mongodb的安装
    迭代器和生成器简单介绍
    File文件操作
    数据类型
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6899304.html
Copyright © 2011-2022 走看看