new、::operator new与placement new的区别

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

在内存管理中,:perator new()/:perator delete() 、delete/new、 placement new 是不同的:
:perator new():只是进行空间的申请而不调用构造函数,可以理解为只是对 malloc 的简单封装,返回 void* 。可以进行类内重载或者全局重载,类内没有重载则寻找全局new。
:perator delete():类似,只是对空间进行释放,而不调用析构函数,可以理解为是对 free 的简单封装。可以类内重载或者全局重载,类内没有重载则寻找全局delete。
new:分为三个步骤:

  • 调用 :perator new(sizeof(type)) 申请空间(首先查找类内的 :perator new() )
  • 调用 type->constructor 对申请的对象进行构造
  • 返回对应的指针类型 type*
delete:同new,分为三个步骤:

  • 调用对应的 type->destroy 进行析构(首先查找类内的 :perator new() )
  • 调用 :perator delete(type*) 进行空间释放
  • return
[code]//类内重载new、delete#includeclass test {public:                void* operator new(size_t n) {                std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表