看placement new和operator new

操作符new的用法就很常见 SomeClasss* psc = new SomeClasss(...)
实际上做的工作是:

1. 调用 void * operator new(size_t size);

即 psc = operator new(sizeof(SomeClasss));

2. 初始化

psc->SomeClasss(...)

但是你可以自己定义operator new的行为. //??原来的行为是在Heap中分配内存空间,自己也可以这么做吗?

More effecitive C++中说:

 你能增加额外的参数重载函数operator new,但是第一个参数类型必须是size_t。(有关operator new更多的信息参见Effective C++ 条款8至条款10。)

当然你可以直接使用operator new函数

操作符operator new将返回一个指针,指向一块足够容纳一个string类型对象的内存。

 


placement new的工作和operator new差不多,唯一的差别是placement new没有分配内存

Widget * constructWidgetInBuffer(void *buffer,

                                 int widgetSize)

{

  return new (buffer) Widget(widgetSize);

}

因为buffer已经指出了分配的内存所在
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值