1.c/c++中的程序划分
2.c/c++中的动态内存管理方式
那c++中呢?
首先c++是兼容c语言的,c语言的管理方式在c++中是可以使用的
那c++自己的呢?
c++中的new与delete:
对于内置类型,new与malloc并没有本质的区别,只是写法上更加的简便
对于自定义类型
new开辟空间失败会抛异常:
3.operator new 与operator delete
new的功能分为两个部分:
1 、开辟空间
2 、调用构造函数
那new的底层是怎么实现的呢?
对于这样一个自定义类型,看看new是怎么操作的
转到反汇编:
可以看到在反汇编界面,new关键字调用了operator new 与A类的构造函数,operator new是new的重载吗?
不是,在c++语法中operator new 就是一个全局函数,帮助new开空间
operator new 其实也是调用的malloc,那为什么不直接调用malloc?
因为malloc开辟空间失败会返回空,不符合new的返回机制,所以operator new封装了malloc,失败的时候进行抛异常