进程意外退出,return 值为 3221225477
Process exits unexpectedly with the return value of 3221225477
我的程序突然退出,return 值为 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
将尝试打印位于无效内存中的数组,这会调用未定义的行为。这可能会导致程序崩溃或 return 一些错误代码。
相反,您需要这样做:
cout<< "You inputted: " << numbers[i];
我的程序突然退出,return 值为 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
将尝试打印位于无效内存中的数组,这会调用未定义的行为。这可能会导致程序崩溃或 return 一些错误代码。
相反,您需要这样做:
cout<< "You inputted: " << numbers[i];