Я пытаюсь решить проблему в ранжировании хакеров. Когда я запускаю следующий код в своей локальной системе, он не показывает никаких ошибок. Но когда я его отправлю, он показывает segmentation fault
.Ошибка сегментации в программе C
Он принял первый тестовый пример, но остальные тестовые примеры приводят к segmentation fault
.
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n,q,i,j;
scanf("%d %d",&n,&q);
int k,l,m,seq,lastAns=0;
int **arr;
arr=(int **) malloc(sizeof(int)*n);
if(!arr) return 0;
arr[0] = (int *) malloc(sizeof(int)*q*n);
for(i = 0; i < n; i++)
arr[i] = *arr + i*q ;
if(!*arr) return 0;
for(i = 0; i < q ; i++)
{
scanf("%d%d%d",&k,&l,&m);
switch (k)
{
case 1: seq= (l^lastAns)%n;
for(j = 0 ; j < q; j++)
{
if(!arr[seq][j])
{
arr[seq][j]=m;
break;
}
}
break;
case 2:
seq= (l^lastAns)%n;
lastAns = arr[seq][m % n];
printf("%d\n", lastAns);
break;
}
}
free(arr[0]);
free(arr);
return 0;
}
'arr = (int **) malloc (sizeof (int) * n);' - >> 'arr = (int **) malloc (sizeof (int *) * n);' - >> 'arr = (int **) malloc (n * sizeof * arr);' - >> 'arr = malloc (n * sizeof * arr);' – wildplasser
Задайте себе, что вы хотите выполнить с помощью '(int **) malloc (sizeof (int) * n); '? – sjsam
Я хочу выделить память для n двойных указателей –