1.C语言中动态内存管理方式
C语言中在使用动态内存时主要是使用malloc/calloc/realloc/free,C语言主要会使用这些即可很好的掌握C语言中的内存管理。
2. C++内存管理
C语言的内存管理方式C++中可以继续使用,但在这一门更高级的语言中,有些地方就会用起来很麻烦,因此C++提供了自己的内存管理方式,使用new和delete操作符进行动态的内存管理。
2.1 new/delete操作内置类型
new和delete在操作内置类型的时候使用起来较为方便,接下来展示一下C++中new和delete的基本用法。
cpp
void test()
{
//动态申请一个int类型的空间
int* p1 = new int;
//动态申请一个4个int类型的空间
int* p2 = new int[4];
//动态申请一个int类型的空间并初始化为0
int* p3 = new int(0);
delete p1;
delete[] p2;//释放多个连续空间
delete p3;
}
注意:单个空间申请和释放的时候,使用new和delete操作符,申请和释放多个进空间的时候要使用new[]和delete[],new和delete要匹配起来使用
2.2 new和delete操作自定义类型
对于自定义类型来说new和delete相较于malloc等C语言中的函数有哪些优势呢?
在C++中,引入了类和对象的概念,所以需要像new和delete这种可以自行调用类中的构造函数和析构函数,使用方便并且更适配C++。
3.operator new和operator delete函数
new和delete是用户进行动态内存申请和释放的操作符,operatoe new和operator delete是系统提供的全局函数,new和delete在底层调用这两个函数来申请和释放空间。
这两个全局函数底层也是使用的malloc和free来实现申请和释放空间。