NODES行を含む行列を生成するコードを作成しました。各行には、ユーザーが指定した数の列があります (以下のnode_degreeを参照)。次に、マトリックスの各エントリに何らかの値を入力します (値は重要ではありません)。
Geany を使用して Fedora でプログラムをビルドすると、エラー メッセージが表示されません。ただし、プログラムを実行すると、次のようになります。
./geany run script.sh 5 行目: 3586 セグメンテーション違反 (コア ダンプ)"./ ad_matrix_outside_main
注: ad_matrix_outside_main は、c ファイルの名前です。
プログラムは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#define NODES (10)
#define CONNECTED (5)
int main()
{
int i, j;
double **matrix;
matrix = (double **)malloc(sizeof(double *)*NODES);
int node_degree[CONNECTED]; //Example: 5 nodes are connected (have non-zero degree).
for(i=0; i<CONNECTED; i++)
{
printf("Enter degree of node %d\n", i); //Index is node, value is degree.
scanf("%d", &node_degree[i]);
}
for(i=0; i<CONNECTED; i++)
{
matrix[i] = (double*)malloc( sizeof(double)* (node_degree[i] + 1) );
}
for(i=0; i<NODES; i++)
{
for(j=0; j<node_degree[i]; j++)
{
matrix[i][j] = j; //j can be the node that node i connected to.
}
matrix[i][j] = NODES;
}
for(i=0; i<NODES; i++)
{
free( matrix[i] );
}
free(matrix);
return(0);
}
エラーの原因は何ですか? 私の表記が問題かもしれないと感じています。