C++ new

实际上,new在C++中有3种用法,不过我们一般只使用其中的一种。

  • new operator
  • operator new
  • placement new

第1种:

Object *obj = new Object();

这是我们这辈子主要接触的new。其实这个new中包含了下面的两个new的作用:分配内存,构造对象。

 

第2种:分配内存,这个new你可以重载的。

void* operator new(size_t size)

{

    return malloc(size);

}

 

第3种:指定内存处构造对象

void *lpstart = malloc(sizeof(Object));

new(lpstart) Object();

 

补充:

class demo
{
public:
    demo(int val) : _val(val)
    {
    }

    void* operator new(size_t size)
    {
        std::cout<<"new called"<<std::endl;
        return ::operator new(size);
    }

private:
    int _val;
};

原文链接: https://www.cnblogs.com/avexer/archive/2012/09/27/3258321.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ new

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/63911

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午11:12
下一篇 2023年2月9日 上午11:12

相关推荐