Meh*_*dad 8 c++ memory-management placement-new new-operator
我正在分配内存,稍后将用于构建具有放置的对象new.我应该使用operator new(n),还是应该使用new unsigned char[n]?为什么?
影响因素:
new[]必须匹配delete[]/ new()用deleteoperator new(n)是出于未指定目的的内存请求,而new unsigned char[n]松散意味着意图在那里存储字符.阵列形式的性能/效率可能稍差 - 具体细节取决于您的实现:
5.3.4/12新T [5]导致对operator new的调用,其中x是表示数组分配开销的非指定非指定值:new-expression的结果将从返回的值中偏移该量
operator new[]. ...
顺便说一句 - 两者都没有初始化:
operator new()将a返回void*到未初始化的内存:请参阅3.7.4.1/2"从分配函数返回时,对分配的存储的内容没有约束",而5.3.4/15则表示"创建类型对象的new-expression" T按如下方式初始化该对象:如果省略new-initializer,则对象默认初始化(8.5)"; 8.5/6表示只有类类型默认构造函数提供初始化.