执行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";
}
答案 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
。