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,对于类的成员函数&#