構造体内にshape
という配列を追加しようとしましたが、一度追加してメンバvalues
にアクセスしようとすると、セグメント化エラーが発生します。私はそれを削除すると、プログラムは完全に動作します。 構造体内に配列を追加した後のセグメンテーションフォールト(コアダンプ)
COOMatrix coo_matrix_create(int m, int sparse_matrix[][m]){
...
COOMatrix coo;
coo = malloc(sizeof(COOMatrix));
coo->rows = malloc(n * m * sizeof(int));
coo->columns = malloc(n * m * sizeof(int));
coo->values = malloc(n * m * sizeof(int));
....
....
coo->rows[k] = i;
coo->columns[k] = j;
coo->values[k] = sparse_matrix[i][j]; // see Note
....
return coo;
}
注:
struct coo_matrix{
int nnz;
int shape[2];
int * rows;
int * columns;
int * values;
};
typedef struct coo_matrix * COOMatrix;
は、これは私がvalues
にアクセスしようとする機能である:私は図形を追加すると、このラインは生産
この
は、構造体の定義でありますセグメンテーション障害。PS:私はCにあまり慣れていないとは言えません。私は最近C言語に触れる前に他の言語を学びました。
近いことなら 'COOMatrix'と' coo_matrix'は異なるものです。 'typedef'をここに表示していません。 – sjsam
@sjsam私はそれを私の質問に含めるのを忘れてしまった。 –
を追加しました。「typdef」のポインタがあなたを困らせてしまいます。 –