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) { ... }
};

operator new默认会去申请内存,成功了会返回内存地址,失败了会调用new_handler,然后再去申请内存,一直循环。所以operator new要返回,必须满足一下条件: 

我们可以利用malloc+placement new来构建自己的内存管理模块,创建对象时,通过malloc申请一个内存块,然后调用placement new来完成对象的初始化;释放对象时,首先调用对象的析构函数,然后通过free释放空间.

相关文章:

  • 2022-02-19
  • 2021-05-05
  • 2022-02-08
  • 2021-12-20
  • 2021-04-14
  • 2022-01-19
  • 2021-04-17
  • 2022-12-23
猜你喜欢
  • 2021-07-24
  • 2022-12-23
  • 2021-12-16
  • 2022-01-02
  • 2022-12-23
相关资源
相似解决方案