![]() |
1
3
不,没有。坦率地说,如果您使用的是新的或新的[]。你的C++代码可能设计得不好。看使用 STD::载体 而不是new[],以及at使用值而不是new。 |
![]() |
2
2
我不知道是否有一个,但您可以使用向量,因为您只是调整元素数组的大小:)
|
![]() |
3
2
如果我理解您的问题,那么您有一个分配一些可变长度内存的类。有两种可能的情况: 内存包含C++对象您没有选择:应该直接或间接地用new分配内存,因为您需要调用构造函数。 如果你想有一个真正的行为,那么不要使用新的。而是使用std::vector,它将正确处理所有分配/重新分配/自由和构造/破坏。 内存是原始的您可以使用新的[]或malloc,因为您正在分配pods(一组int或short、dumb结构等)。 但是,新的[]不会给你一个真正的行为…但是,如果您开始使用malloc,那么您必须进行内务管理,即确保在正确的时间自由调用,在某个地方记住数组的大小,甚至可能具有不同于数组容量的大小(即分配更多,以避免执行过多的重新分配)。 你知道吗?Vector已经为您做了所有这些。 结论您在C++中编码,那么您的问题的解决方案(即在一个类内分配可变长度内存),正如前面的答案已经表示的那样。 使用STD::向量 . |
![]() |
4
0
看看Vector如何使用Placement New来初始化、复制(移动)和销毁内存中的对象,这些对象在原则上是“重新分配”的。在实现向量之类的东西方面有相当多的工作,所以我想简单地说使用向量…它为所有对象使用一个连续的内存块,因此您可以将它与期望数组的函数一起使用。而且,它隐式地为您跟踪对象的数量… 当然,这种方便带来了成本——它在后台的堆上分配内存。 因此,如果您完全知道您只需要一个大小合理的数组,那么堆栈上的数组就不会因为速度而被击败。 溴 每 |
![]() |
5
-3
不,只要使用malloc/realloc/free,有什么问题吗? |
![]() |
TheKing · 为什么数组的地址可以有负值? 3 年前 |
![]() |
yurnero · MATLAB:“加载”一个快速访问功能 7 年前 |
![]() |
joe · 一页可以同时在两个工作集中吗? 7 年前 |
![]() |
Jaques · “.exe”已触发断点 7 年前 |
![]() |
adn bps · 在函数中修改变量的高效内存方法 7 年前 |
![]() |
Gauraang Khurana · C语言中分段错误的不稳定行为 7 年前 |
![]() |
Rajesh K · 如何查找设备中存在的广告垃圾? 7 年前 |