gpt4 book ai didi

c++ - "new (expr-list) type"操作的含义和例子

转载 作者:太空狗 更新时间:2023-10-29 21:04:19 24 4
gpt4 key购买 nike

在“The C++ Programming Language”一书中,在操作列表(文章 6.2)中,Bjarne Stoustrup 写道:

create (place) new ( expr-list ) type

create (place and initialize) new ( expr-list ) type ( expr-list )

我从未听说过这种 new 运算符,我很想知道它的作用。

最佳答案

这称为 placement-new。您可以在现有内存上创建一个对象。

这是一个 explanation和一个有用的 question in SO

你也可以有 nothrow ,例如:

char* pzNewBuffer = new (nothrow) char [2048];

这表明 new不会抛出 std::bad_alloc如果内存不足,但它将返回 NULL , 而不是。


我想到的另一个例子 - 标准容器(可能)使用 placement new : 当你打电话时 reserve ,内存已分配,但在此内存上没有构造/初始化任何内容。因此,当您插入(例如 std::vector<T>::push_back)时,如果已分配但未初始化内存 - placement new用来。

关于c++ - "new (expr-list) type"操作的含义和例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11373699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com