gpt4 book ai didi

c++ - C++ 构造 "placement new"的用途是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:34:45 25 4
gpt4 key购买 nike

我刚刚了解了名为“placement new”的 C++ 构造。它允许您精确控制指针在内存中指向的位置。它看起来像这样:

 #include <new>        // Must #include this to use "placement new"
#include "Fred.h" // Declaration of class Fred

void someCode()
{
char memory[sizeof(Fred)];
void* place = memory;

Fred* f = new(place) Fred(); // Create a pointer to a Fred(),
// stored at "place"

// The pointers f and place will be equal

...
}

(来自 C++ FAQ Lite 的示例)

在本例中,Fred 的 this 指针将等于 place


我已经看到它在我们团队的代码中使用过一两次。根据您的经验,这种结构能带来什么?其他指针语言有类似的结构吗?对我来说,这似乎让人想起 FORTRAN 中的 equivalence,它允许不同的变量在内存中占据相同的位置。

最佳答案

它允许您进行自己的内存管理。通常,这最多只会让您的性能略有提高,但有时这是一个巨大的胜利。例如,如果您的程序使用大量标准大小的对象,您可能希望创建一个分配大量内存的池。

这种事情也在 C 中完成,但由于 C 中没有构造函数,因此不需要任何语言支持。

关于c++ - C++ 构造 "placement new"的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362953/

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