定位new

在c++中使用new表达式时实际是执行了3步

  1. new表达式调用一个名为 operator new(或者 operator new[])的标准库函数。该函数分配一块足够大的、原始的、未命名的内存空间以便存储特定类型的对象(或者对象数组)
  2. 编译器运行相应的构造函数以构造这些对象,并为其传入初始值
  3. 对象被分配了空间并构造完成,返回一个只想该对象的指针

使用delete表达式时实际执行了2步

  1. 对指针所指向的对象或数组中的元素执行对应的析构函数
  2. 编译器调用名为 operator delete(或者 operator delete[])的标准库函数释放内存空间

可以重载 operator new 和 operator delete 以达到控制内存分配的过程,但

void operator new(size_t, void*);

是不允许重载的,只供标准库使用。(以上参考自c++ primer)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容