我正在尝试创建一个动态增长数组,每当用户输入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;
}
1条答案
按热度按时间9bfwbjaz1#
当你退出循环时,你已经再次保留了内存。也就是说,你已经把
ptr1
指向了一个你还没有初始化的size
整数的内存地址。还要注意,当你写*(ptr + i) = inp;
时,你试图写你还没有分配的内存。这是因为尽管你增加了ptr1
,你没有对ptr
做同样的事情。