C/C++内存管理

目录

1. C语言中的动态内存管理方式

1.1 malloc/calloc/realloc

2. C++的动态内存管理方式

2.1 new/delete操作内置类型

2.2 new/delete操作自定义类型

3. operator new和operator delete函数

3.1 new和delete的底层原理

4. new和delete的实现原理

4.1 内置类型的创建

4.2 自定义类型

5. 定位new表达式

6. malloc/free和new/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[]来进行。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值