分段错误(核心转储),linux,g ++

时间:2015-02-08 04:38:38

标签: linux segmentation-fault g++

我有一个用g ++编译而没有任何错误的代码但是如果我运行en executable并且输入第一个整​​数值后我得到了seg错误。以前这段代码工作正常,但现在我不断收到这些消息。 我是初学者,我不知道为什么会这样。我的代码:

#include <iostream>

#include <fstream>

using namespace std;

int main(){

int x, y, z,h,m,d,i, a[9][9];

bool f;

for(x==0; x<=8; x++){for(y==0; y<=8; y++){  
cin >> z; a[x][y]=z;


// y 
};
// x
};

do {

for(x==0; x<=8; x++){for(y==0; y<=8; y++){

if(a[x][y] == 0){

for(i==1 ; i<=9; i++){h=0; for(m==0; m<=8; m++){ 

if(y>=0 and y<=8){ if(a[x][8-m] != i){h++;};};

if(y>=0 and y<=8){ if(a[x][0+m] != i){h++;};};

if(x>=0 and x<=8){ if(a[8-m][y] != i){h++;};};

if(x>=0 and x<=8){ if(a[0+m][y] != i){h++;};};

if(h==16){a[x][y]=i; h=0;};
//lines

}; h=0;




// i
   };

// if 0
};

for(x==0; x<=8; x++){for(y==0; y<=8; y++){  
d=d+a[x][y];

// y 
};
// x
};

//y
};
// x
};



if(d==360){f==1;};
}

while(f==0);

if (f==1){for(x==0; x<=8; x++){for(y==0; y<=8; y++){  
cout << a[x][y];


// y 
};
// x
};
};


return 0;

} 

1 个答案:

答案 0 :(得分:0)

当你的意思是x = 0,y = 0

时,你正在做y == 0,x == 0

这会导致seg错误和/或未定义的行为,因为x和y仍然未初始化,所以当你执行[x] [y] =某事时你试图写入无效的内存地址

示例:

for(x==0; x<=8; x++){for(y==0; y<=8; y++){  
cin >> z; a[x][y]=z;


// y 
};
// x
};

变为

for(x=0; x<=8; x++){
    for(y=0; y<=8; y++){  
        cin >> z; a[x][y]=z;     
    };// y 
};// x