赞
踩
由于C++引入了类的概念所以创建空间和销毁空间变得更加复杂,使用malloc和free也会更加复杂,所以C++引入了new和delete来简化代码。
格式
void Test()
{
// 在堆上申请一个int类型的空间
int* ptr1 = new int;
// 在堆上申请一个int类型的空间并"初始化"为10
int* ptr2 = new int(10);
// 在堆上申请10个int类型的空间
int* ptr3 = new int[10];
delete ptr1;
delete ptr2;
delete[] ptr3;
}
对于自定义类型,new会自动调用构造函数,delete会自动调用析构函数。这是new和delete相比于malloc和free的重大优势。
class A { public: A() { cout << "this is constructor function" << endl; } ~A() { cout << "this is destructor function" << endl; } }; void test1() { A* a = new A; delete a; }
new[]和delete面对自定义类型会多次调用构造函数和析构函数
malloc、free与new、delete区别:
✨本文收录于C++语法及练习
当你喜欢一篇文章时,点赞、收藏和关注是最好的支持方式。如果你喜欢我的文章,请不要吝啬你的支持,点赞
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。