を使用して2次元配列にメモリを割り当てるmalloc()
場合、入力サイズ(行列N * N)が5
(つまりN>5
)より大きい場合にセグメンテーション違反が発生します。
以下のコードは、inputs(N)が。未満の場合は正常に機能し5
ます。
問題を理解するのを手伝ってくれませんか。
#include<stdio.h>
#include <stdlib.h>
int main(){
int n;
int i,j;
int **adj;
//reading size of a N*N matrix
scanf("%d",&n);
//dynamically allocating memory for a 2-dimensional array
adj=(int**)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
adj[i]=(int*)malloc(sizeof(int)*n);
}
//taking input from the file
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&adj[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d\t",adj[i][j]);
}
printf("\n");
}
return 0;
}