해커 순위 문제를 해결하려고합니다. 로컬 시스템에서 다음 코드를 실행하면 오류가 표시되지 않습니다. 하지만 제출하면 segmentation fault
이 표시됩니다.C 프로그램에서 세그먼트 오류가 발생했습니다.
첫 번째 테스트 사례를 수락했지만 나머지 테스트 사례는 segmentation fault
이됩니다.
arr=(int **) malloc(sizeof(int)*n);
프로그램이 어디 sizeof(int) == sizeof(int*)
(즉, 32 비트 시스템) 시스템에서 작동하지만, 아마에 (64 비트 것들에 실패합니다 sjsam는 지적
#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 *) * n); - >> – wildplasser
'(int **) malloc (malloc)을 사용하여 달성하고자하는 것을 자문 해보십시오. (sizeof (int) * n);'? – sjsam
도움을 주셔서 감사합니다. 이중 포인터 N –