gpt4 book ai didi

C++ 在不激活构造函数的情况下分配内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:44 25 4
gpt4 key购买 nike

我正在从一个文件中读取值,我将在读取它们时将其存储在内存中。我在这里读到,在 C++ 中处理内存位置的正确方法是始终使用 new/delete,但是如果我这样做:

DataType* foo = new DataType[sizeof(DataType) * numDataTypes];

然后将为每个创建的实例调用默认构造函数,我不希望这样。我打算这样做:

DataType* foo;
char* tempBuffer=new char[sizeof(DataType) * numDataTypes];
foo=(DataType*) tempBuffer;

但我认为这会是某种类型不安全的东西。那我该怎么办呢?

现在在研究这个问题时,我发现有些人说数组不好,而 vector 很好。我试图更多地使用数组,因为我认为通过使用(我认为是)较慢的 vector 来填充我的程序是一个坏男孩。我应该使用什么???

最佳答案

使用 vector !!!由于您知道元素的数量,因此请确保先保留内存(通过在插入元素之前调用 myVector.reserve(numObjects)。)。

这样做,您将不会调用类的默认构造函数。

所以用

std::vector<DataType> myVector; // does not reserve anything
...
myVector.reserve(numObjects); // tells vector to reserve memory

关于C++ 在不激活构造函数的情况下分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4576307/

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