重新分配C++数组的内存
Reallocating memory of a C++ array.
可能重复:
如何在C++中realloc
?
我知道,如果已经通过malloc()
或calloc()
分配了内存,则可以使用realloc()
重新分配(扩展)C++阵列。我的问题是,如何在C++中扩展内存已通过new
运算符分配的数组?
不能-这就是为什么在C++中使用std::vector<>
。
如果要执行此操作,则必须分配一个新数组(通过new
),然后跨(例如,std::copy
)复制旧项,然后跨上一个数组复制delete[]
。
只需使用std::vector
——让它为你做所有这些事情。。。
通常,C++阵列不能用realloc
重新分配,即使存储是用malloc
分配的。malloc
不会为您提供数组。它提供指向可用存储的指针。这里有一个微妙的区别。
对于POD类型,可用存储和实际对象之间几乎没有区别。但对于非POD类型,可用存储和对象是完全不同的。
realloc
为您提供了更大的可用存储空间。它操作存储而不是对象。这对POD类型来说可能很好,但对其他类型来说,这会带来灾难。
使用::std::vector
。
查看此问题或此问题以了解更多详细信息。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '