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

Leo*_*rdo 1 c++ heap memory-management dynamic-arrays

让我们说

char *a;
a = new char[4];
Run Code Online (Sandbox Code Playgroud)

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

说我想继续我把里面的任何值a[0]a[3],但现在我想的更多的空间a[4]a[5]等.这有可能在C++?


起初我觉得我可以做:

char* a[10];
a[0] = new char[size];
Run Code Online (Sandbox Code Playgroud)

每当需要更多空间时,我可以去a[1]并分配更多空间.这是我现在能想到的唯一选择.

Som*_*ude 6

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

但是,C++还有其他功能,std::vector可以减少手动处理这些内容的需要.