このコードセグメンテーションフォールトを与える。 M = 20の場合は第二のループは、わずか12回実行した後、セグメンテーション障害を与えて、その後動的配列(int ** arr)のスキャン値のセグメンテーションフォルト
"Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7a6dde5 in _IO_vfscanf_internal (s=, format=, [email protected]=0x7fffffffdba8, [email protected]=0x0) at vfscanf.c:1902 1902 vfscanf.c: No such file or directory. "
void readData()
{
int **arr,m;
scanf("%d",&m);
arr = (int **)malloc(sizeof(int)*m);
for(int i=0;i<m;i++)
{
arr[i] = (int *)malloc(sizeof(int) * 2);
}
for(int i=0;i<m;i++)
{
printf("..%d ..\n",i); // if m = 20 then running only 12 times
scanf("%d %d",&arr[i][0],&arr[i][1]);
}
}
int main()
{
readData();
}
:GDBによるデバッグに、このエラーを与えています。最初のループは20回実行されています。 私を助けてください。
' INT(* ARR)[2] =のmalloc(m個*のはsizeofの*のARR)は、以下のようでなければなりません'm + 1'が' malloc'を呼び出します:) – Sebivor