我正在尝试创建一个动态增长的数组,每次用户输入除0以外的任何整数时,该数组的大小都会增加。当0被按下时,它停止从用户获取数据,其余的代码被执行。我试图通过do while
循环实现增长数组,但它一直在我的数组中给我垃圾值。
int main(){
int size = 1;
int* ptr;
int* ptr1;
int i = 0;
int inp;
ptr = new int[size];
do{
ptr1 = new int[size];
cin >> inp;
if (inp == 0)
break;
else{
*(ptr + i) = inp;
size++;
i++;
for (int j = 0; j < size; j++){
*(ptr1 + j) = *(ptr + j);
}
}
} while (1);
for (int k = 0; k < size; k++)
cout << *(ptr1 + k) << endl;
system("pause");
return 0;
}
当你退出循环时,你已经预留了内存。也就是说,您已经将ptr1
指向尚未初始化的size
整数的内存地址。还要注意,当您写入*(ptr + i) = inp;
时,您正在尝试写入尚未分配的内存。这是因为尽管您增加了ptr1
,但您不会对ptr
进行相同的操作。