布局new操作符

new负责在堆中找到一个足以能满足要求的内存块,而布局new操作符让您能够指定要使用的位置。程序员可以使用这种特性来设置其内存管理规程或处理需要通过特定地址进行访问的硬件。要使用布局new特性,应当包含头文件new。
#include <new>
char buffer[50];//使用静态数组为布局new操作符提供内存空间
void main()
{……
 int *p=new (buffer) int [20];
……}

比较:
常规new操作符每次查找一个新的内存块进行分配;而布局new操作符使用传递给它的地址,它不跟踪哪些内存单元已经被使用,也不查找未使用的内存块,把内存管理的负担交给了程序员。
delete是用来释放常规new运算符分配的内存块,而布局new操作符分配的是buffer中的静态内存,因此不能用delete来释放。另一方面,如果buffer是使用常规new操作符创建的,便可以用常规delete操作来释放整个内存块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值