【发布时间】:2012-11-24 11:03:04
【问题描述】:
我遇到了分段错误的问题。 看:
#include<fstream>
using namespace std;
int main(){
int n,i,vector[10001],vectorcopy[10001];
ifstream in("program.in");
ofstream out("program.out");
in>>n;
for(i=1;i<=n;i++){
in>>vector[i];
vectorcopy[i]=vector[i];
}
return 0;}
调试器说: 程序接收到信号 SIGSEGV,分段错误
请告诉我该怎么做!
【问题讨论】:
-
您需要检查您的输入文件是否真正打开成功 - 即添加错误检查。
-
在调试器中运行它,它会告诉你调用堆栈的位置以及它在哪一行被分割
-
您的程序从不检查任何操作是否成功。它可能会在任意数量的点上失败。
-
您的
for循环必须是for(i = 0 ; i < n; ++i)。数组在 C 和 C++ 中索引为零 -
避免将变量命名为 stl 类(向量、字符串等)。特别是因为你写了
using namespace std;。顺便说一句,也避免这种情况
标签: c++ arrays segmentation-fault fstream