2021-07-11

本文探讨了C++中new和malloc的区别,包括它们在内存分配、类型安全和异常处理上的不同。此外,还详细阐述了const关键字的多重作用,如常量变量、常量指针、函数参数和成员函数的const修饰,以及在类中的应用和限制。
摘要由CSDN通过智能技术生成

new和malloc区别
malloc,free是库函数,new,delete是关键字。
new申请空间的时候,无需指定分配空间大小,编译器会根据类型自行计算。malloc在申请空间时,需要确定所生请空间的大小。
new申请空间时,返回的类型是对象的指针类型,无需强制类型转换,是类型安全的操作符;malloc申请空间时,返回的是void*类型;需要进行类型的转换,转换为对象类型的指针。
new分配失败时,会抛出bad_malloc异常,malloc分配失败返回空指针。
new操作符从自由存储区上位对象动态分配内存,而malloc函数从堆上分配内存(自由存储区不等于堆)
对于自定义的类型,new首先调用operator new()函数申请空间(底层通过malloc实现),然后调用构造函数进行初始化,最后返回自定义类型的指针;delete首先调用析构函数,然后调用operator delete()释放空间(底层通过free实现)。malloc,free无法进行自定义类型的构造和析构。

const关键字的作用
1,欲阻止一个变量被改变,可用const,在定义该const变量时,需先进行初始化,然后就没有机会改变他了
2,对指针而言,可以指定指针本身为const,也可以指定指针所知的数据为const,或二者同时指定为const
3,在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值。
4,对于类的成员函数&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值