C++(二十九) — new 和 delete

1、基本用法,定义变量、数组、对象

class test
{
public:
    test(int a_, int b_)
    {
        a = a_;
        b = b_;
        cout << "构造函数执行" << endl;
    }
    ~test()
    {
        cout << "析构函数执行" << endl;
    }
private:
    int a;
    int b;
};

int main()
{
    // 1、定义一个int指针
    int *p = new int;
    *p = 10;
    // 2、 定义指针时直接初始化赋值
    int *p1 = new int(20);

    // 3、定义一个动态的整型数组,就是申请了5个整型数据空间
    int *p2 = new int[5];
    p2[0] = 30;// 给第一个数组空间赋值

    cout << *p << "  " << *p1 <<"   "<<*p2<< endl;

    // 释放空间
    delete p, p1; // 释放变量
    delete []p2;//对于数组的释放

    // 4、定义对象指针
    test *t = new test(1,2);
    delete t;

    system("pause");
    return 0;
}

2、new 、delete与c的malloc、free的区别

  (1)malloc、free,在定义对象时,只会分配内存大小,不会调用类的构造、析构函数;

  (2)new 、delete,不止会分配内存,也会调用构造、析构函数,初始化对象。

原文地址:https://www.cnblogs.com/eilearn/p/10213403.html