小编Dom*_*cki的帖子

在堆上“溶解”C++ 数组是否安全?

我目前正在实现我自己的矢量容器,但遇到了一个非常有趣的问题(至少对我来说)。这可能是一个愚蠢的问题,但idk。

我的向量使用一个堆指针数组来堆分配未知类型 (T**) 的对象。我这样做是因为我希望对单个元素的指针和引用保持不变,即使在调整大小之后也是如此。

这是在构造和复制时以性能为代价的,因为我需要在堆上创建数组以及在堆上创建数组的每个对象。(堆分配比堆栈慢,对吧?)

T** arr = new *T[size]{nullptr};
Run Code Online (Sandbox Code Playgroud)

然后对于每个元素

arr[i] = new T{data};
Run Code Online (Sandbox Code Playgroud)

现在我想知道它是否安全、有益(更快)和可能,如果不是单独分配每个对象,我可以在堆上创建第二个数组并将每个对象的指针保存在第一个数组中。然后使用(并删除) 这些对象稍后就好像它们是单独分配的一样。

=> 在堆上分配数组是否比单独分配每个对象更快?

=> 在数组中分配对象并稍后忘记数组是否安全?(我觉得这听起来很愚蠢)

链接到我的 github 仓库:https : //github.com/LinuxGameGeek/personal/tree/main/c%2B%2B/vector

谢谢你的帮助 :)

c++ arrays vector heap-memory dynamic-memory-allocation

0
推荐指数
1
解决办法
124
查看次数