分段错误(核心已转储)几次

时间:2020-04-02 18:47:20

标签: c arrays linux input cmd

所以我正在做某事,但遇到了很大的问题。在我的程序上,当我输入较小的数组大小时,我没有任何问题,并且程序运行正常(例如3x3)。当我用诸如6x6(i = 6,j = 6)之类的东西输入X数组时,我得到了这个错误,我真的不知道为什么...我试图从昨天开始解决它,但仍然一无所获:(任何人都可以帮我吗?如果有关系,我在计算机上使用的软件是ubuntu 18.04。我将感谢任何人都会为您提供帮助。

我的代码是这样的:

#include <stdlib.h>

int main(int argc, char *argv[])
{
 int N,M;  // N=megethos rows , M=megethos columns
 int **X,**Y;  // pinakas
 int size,i,j,num;
 int freqamount, sizeOfArray;
 float freq;


 printf("\n\nGive me the rows of the table: ");
 scanf("%d",&N);
 printf("\n\nGive me the columns: ");
 scanf("%d",&M);

 size = N*sizeof(int);
 X = malloc(size);

 size = M * sizeof(int);
 for(i=0; i<M;i++){
   X[i] =(int*)malloc(size);
 }

 Y = malloc(size);

 for(i=0;i<3;i++){
   Y[i] = (int*)malloc(3*sizeof(int));
 }

 printf("\n\nGive the number ");
 scanf("%d",&num);


 printf("\n\ngive the frequence");
 scanf("%f",&freq);

 sizeOfArray = N*M;
 freqamount =(int) ((freq * sizeOfArray)/100);
 printf("\nIt should appear: %d times\n",freqamount);
/*
     if(freqamount == 100){
       X[i][j] = num;
     }
     if(freqamount == 0){
       x[i][j] != num;
     }
           X[i][j] = rand() % 100;
*/

 for(i=0;i<N;i++){
   for(j=0;j<M;j++){
     X[i][j] = num;
   }
 }
 for(i=0;i<N;i++){
   for(j=0;j<3;j++){
     if(j=0){
       Y[i][j] = rand() % 100;
     } 
     if (j=1){
       Y[i][j] = i;
     }
     if(j=2){
       Y[i][j] = j;
     }
   }
   printf("%d\t",Y[i][j]);
 }




 for(i=0;i<N;i++){
   free(X[i]);
 }
 free(X);

 return 0;
}

1 个答案:

答案 0 :(得分:0)

如果您查看带有符号的转储,并查看PC以查看在何处触发了转储,那么问题出在哪里就很明显了。您将需要考虑代码及其崩溃时的功能(程序计数器地址之前的行)。