在C语言中,同样也存在动态内存管理,那么它和C++中的动态内存管理有什么不同呢?下面这篇博客将写下有关C++动态内存管理的相关知识,其中也会将其与C语言中的动态内存管理的一些区别加以阐述。在这之前如果你还对C语言中动态内存管理掌握不足,可以参考下这篇博客(152条消息) 动态内存管理(C语言)(malloc、calloc、realloc、free)_是小夏啊!的博客-CSDN博客
一、new和delete的使用原理
如果申请的是内置类型的空间,new和malloc,delete和free基本类似,不同的地方是:new/delete申请和释放的是单个元素的空间,new[]和delete[]申请的是连续空间,而且new在申请空间失败时会抛异常,malloc会返回NULL。
★ 内置类型空间开辟
在为内置类型开辟空间时,C语言和C++并无本质上的区别,只有在用法上存在一些区别。例如:分别用两者开辟1个int大小类型的空间和5个int大小类型的数组空间。
参考代码如下:
int main()
{
int* p1 = (int*)malloc(sizeof(int)); // 开辟1个int类型大小的空间
int* p2 = (int*)malloc(sizeof(int) * 5); // 开辟5