目录
3. operator new和operator delete函数
1. C语言中的动态内存管理方式
1.1 malloc/calloc/realloc
在C语言中提供了三个方式来动态开辟空间,分别是malloc、calloc、realloc,
那他们三者有什么区别呢?
malloc:在堆上开辟空间,但对开辟的空间不进行初始化。
calloc:在堆上开辟空间,并对开辟的空间进行初始化,如果是int等类型则初始化为0,如果是指针类型则初始化为NULL。
realloc:对已开辟的空间进行扩充或者缩小,如果是进行扩充,已开辟空间的内容会被保存,如果是进行缩小,可能会丢失原空间的内容。
2. C++的动态内存管理方式
C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出 了自己的内存管理方式:通过new和delete操作符进行动态内存管理。
2.1 new/delete操作内置类型
我们可以看到当未赋值的new一个空间时,不会对其初始化,而是赋了一个随机值。
注意:
当类型后面跟的()时,()里面是数字表示对开辟的空间进行初始化的值
当类型后面跟的是[]时,[]里面是数字表示开辟的空间个数
那我们既然开辟了空间,那就必然存在释放空间的说法,那在C语言中开辟的空间是如何释放的呢?
我们知道使用free()函数来对开辟的空间进行释放,那在C++中是使用什么来进行释放的呢?
我们可以发现是使用delete函数来进行释放。
注意当开辟一个数组时,我们需要使用delete[]来进行。