问题描述
我的程序突然退出,返回值为3221225477。下面是代码:
#include<iostream>
using namespace std;
const int MAX_VALUE=-1;
int main(){
int* numbers= NULL;
int capacity=0;
int size=0;
while(true){
int number;
cout<<"Enter number: ";
cin>> number;
if(number==MAX_VALUE) break;
if(size==capacity){
numbers= new int[(sizeof(int)*(size+1))];
}
numbers[size]=number;
size++;
capacity++;
}
for(int i=0;i<size;i++){
cout<< "You inputted: "+numbers[i];
}
}
https://pasteboard.co/Jn6SBBQ.png
(我尝试从此处的内置编辑器通过imgur上传它,但它给了我无法访问imgur的错误)
解决方法
在这一行:
cout << "You inputted: " + numbers[i];
// ^ incorrect
您正在向int
添加char[15]
。如果int
大于数组的大小,则cout
将尝试打印位于无效内存中的数组,这将导致未定义的行为。这可能导致程序崩溃或返回一些错误代码。
相反,您需要这样做:
cout<< "You inputted: " << numbers[i];