Ошибка сегментации (ядро сброшено) несколько раз - PullRequest
0 голосов
/ 02 апреля 2020

Итак, я работаю над чем-то, и у меня большая проблема. В моей программе при вводе небольшого размера массива у меня нет проблем, и программа работает нормально (например, 3x3). Когда я вводю массив X с чем-то вроде 6x6 (i = 6, j = 6), я получаю эту ошибку, и я действительно не знаю почему ... Я пытаюсь решить ее со вчерашнего дня и до сих пор ничего не могу :( Кто-нибудь может помочь я? Программное обеспечение, которое я использую на своем компьютере, - это 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 голосов
/ 02 апреля 2020

Если вы посмотрите на дамп с символами и посмотрите на P C, чтобы увидеть, где был запущен дамп, должно быть очевидно, в чем проблема. Вам нужно будет подумать о коде и о том, что он делает в момент его сбоя (строка перед адресом счетчика программ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...