1. new的执行过程:
2. new和malloc的比较:
3. delete的执行过程:
4.delete和free的比较
5. new的三种形态:new operator, operator new, placement new 重载运算符new:
class Test {
public:
void* operator new(size_t size) { ... }
};
public:
void* operator new(size_t size) { ... }
};
operator new默认会去申请内存,成功了会返回内存地址,失败了会调用new_handler,然后再去申请内存,一直循环。所以operator new要返回,必须满足一下条件:
我们可以利用malloc+placement new来构建自己的内存管理模块,创建对象时,通过malloc申请一个内存块,然后调用placement new来完成对象的初始化;释放对象时,首先调用对象的析构函数,然后通过free释放空间.