进程意外退出,返回值3221225477

问题描述

我的程序突然退出,返回值为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];