c++ - 是否可以在运行时在堆上创建一个数组,然后在需要时分配更多空间?

标签 c++ memory-management heap-memory dynamic-arrays

假设我愿意

char *a;
a = new char[4];

现在,是否可以进一步扩展数组的大小?

假设我想将我放在 a[0] 中的任何值保留到 a[3] 但现在我想要更多空间给 a[4] a[5] 等。这在 C++ 中可能吗?


起初我觉得也许我可以做:

char* a[10];
a[0] = new char[size];

每当需要更多空间时,我可以转到 a[1] 并分配更多空间。这是目前我能想到的唯一选择。

最佳答案

不幸的是,这在 C++ 中是不可能的。您必须分配一个新区域并将旧区域复制到新区域。

但是,C++ 具有其他功能,例如 std::vector,可以减轻手动处理这些事情的需要。

关于c++ - 是否可以在运行时在堆上创建一个数组,然后在需要时分配更多空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15379903/

相关文章:

c++ - c++ - 如何使用while C++将数字字符串输入为int *

c++ - 如何访问位集中的位范围?

c - 变量可以在设置之前使用

C++ 堆栈与堆分配

c - 尽管分配了堆,但一旦函数退出,内存就会越界?

C++,复制构造函数在字符数组中不能正常工作

c++ - QToolButton 的位置在调整大小或移动父部件时不会改变

c++ - 获取内存泄漏导致的内存溢出,应用程序继续运行和分配

c - 返回 c 中的连续 block

java - 在生产系统上详分割析 Tomcat 堆