C++利用new分配的内存发现不够用怎样才能保持原值不变增加内存?

如: int * num = new int[10];
// 发现10个数字还是不够要增加到50个;
num = new int[50]; // 这样做的话因为重新分配内存导致先前的值不在了,RT,请问该怎么办?

可以先将*num中的值保存到一个数组X中

然后delete[] num;
int *num = new int[50];
再将X中的原来num中的值放到新的扩大的num中去
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-01
不能的,数组是连续的一片内存,所以一旦分配就不能增长,因为在这数组尾部的内存可能被用了,那么怎么能增长,C99版以前不支持数组增长
第2个回答  2014-04-01
把原来的拷贝到新申请的空间中去