c++ 内存对象管理

让我们从placement new回来片刻,看看new操作符(new operator)与operator new的关系,你想在堆上建立一个对象,应该用new操作符。它既分配内存又为对象调用构造函数。如果你仅仅想分配内存,就应该调用operator new函数;它不会调用构造函数。如果你想定制自己的在堆对象被建立时的内存分配过程,你应该写你自己的operator new函数,然后使用new操作符,new操作符会调用你定制的operator new.如果你想在一块已经获得指针的内存里建立一个对象,应该用placement new.

 

在C++里面当调用

A * a = new A();

分两部做:

第一部:

调用oprator new(size_t size)函数分配内存。

调用构造函数A()

 

至于oprator new(size_t size)

编译器会看A有没有重写该函数,如果没有重写,就调用全局的operator new()函数。

 

所以,要想改变由系统自动在堆栈上给对象分配内存,自己控制分配内存的算法。就要重写该operator new()函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值