operator new, new operator, delete new, new delete

来源:互联网 发布:淘宝商城质检报告 编辑:程序博客网 时间:2024/06/10 17:21

不同意义的new和delete

operator前置:原始的内存空间分配
operator后置:原始的内存空间分配+构造与析构

operator new 和 operator delete

  • operator new: 和malloc一样,唯一任务是分配原始内存
  • operator delete: 释放operator new分配的内存,防止资源泄露

    void* operator new(size_t size);//operator new通常声明void operator delete(void* memory);//operator delete通常声明void* memory =  operator new(sizeof(string));operator delete(memory); 

new operator和delete operator

  • new operator: 包括调用operator new申请内存空间,调用构造函数constructor,返回指向该对象的指针

    void * memory= operator new(sizeof(string));//申请内存空间call string::string("memory management") on memory;//内存对象初始化string *ps = static_cast<string*>(memory);//返回指向新对象的指针
  • delete operator: 包括调用析构函数,释放申请的内存空间
delete ps;

相当于:

ps->~string;operator delete(ps);

参考:《more effective c++》操作符(operators)章节

0 0
原创粉丝点击