C ++进程终止,状态为-1073741510(0分钟,2秒)

时间:2016-02-11 15:11:05

标签: c++

执行exe后,我收到此错误:

流程终止,状态为-1073741510(0分钟,2秒)

我应该为长变量设置限制吗?编译后我收到0警告

以下是代码:

#include <iostream>
#include <fstream>
//#define long long 100000000;
//#define int 1000;

using namespace std;
void test1();
void test2();
void test3();
int main()
{
    int p,n;
   // long z;
    long sir[2*n] ;
    std::ifstream file;
    file.open("input.txt");
    file >> p;
    file >>n;
    for (int i=0;i< (2*n);i++){
        file >> sir[i];
    }
    file.close();
    if (p==1)test1();
    else if(p==2)test2();
    else test3();
    return 0;
}
void test1(){
    cout << 1;//sir[2];
}
void test2(){
    cout << "d";
}
void test3(){
    cout << "d";
}

2 个答案:

答案 0 :(得分:4)

n中使用之前,您从未初始化long sir[2*n] ;。这个测量使用垃圾大小来声明数组,所以现在你有一个垃圾数组。任何对该数组的使用都将是未定义的行为和问题的原因。

由于long sir[2*n] ;是一个可变长度数组而不是标准数据,我建议您使用std::vector并在从文件中读取后设置其大小。像下面的东西应该工作

file.open("input.txt");
file >> p;
file >>n;
std::vector<long> sir(n);

如果您不能使用矢量,那么您可以使用指针并在读取

之类的大小后使用new创建数组
file.open("input.txt");
file >> p;
file >>n;
long * sir = new long[2*n];

完成后你必须记得使用delete [] sir;,这样你就会发现内存泄漏。

答案 1 :(得分:0)

int p,n;
long sir[2*n] ; // here n is an undefined value, therefore the length of sir is undefined

只需在sir之后加上file >>n;的定义即可。有关详细信息,请参阅VLA