一、new/delete
在C语言中,我们可以通过malloc/free来进行内存管理,C++中也可以继续使用,但是在有些情况下,无法得到我们想要的结果,而且使用起来较为麻烦。
因此C++便提出了自己的内存管理方式:new/delete操作符,来进行动态内存管理。
- new / delete:用于申请和释放单个元素的空间,
- 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会调用析构函数。而malloc和free不会。
class Test
{
public:
Test()
: _data(0