C++ 动态内存管理
operator new和operator delete函数是两个全局函数,编译器在编译new和delete时会调用这两个函数,其底层分别是封装malloc和free
1.new
new 内置类型
内置类型没有构造函数,所以使用new就是调operator new函数开空间,如果要初始化编译器就加一条赋值指令就是,和malloc差别不大
new 自定义类型
调用operator new函数开空间,然后调用构造函数初始化成员变量
2.delete
delete 内置类型
内置类型没有析构函数,如果是指针变量需要手动free释放资源内存空间,然后调operator delete释放对象本身空间
new 自定义类型
先调用析构函数释放资源内存空间,然后调operator delete释放对象本身空间
operator new [ ]和operator delete [ ]函数也是两个全局函数,编译器在编译new [ ]和delete [ ]时会调用这两个函数,其底层分别是封装(operator new 、构造函数 )和 (析构函数、operator delete函数)
1.new [ ]
调用n次operator new开空间,然后调用n次构造函数初始化成员变量
2.delete [ ]
先调用n次析构函数释放资源内存空间,然后调n次operator delete释放对象本身空间