私はヘッダーファイルで定義されたこの構造を持っています:
struct params
{
size_t s;
float f1;
float f2;
int i1;
float f3;
gsl_matrix_float *gm;
};
配列と別の配列を次のように初期化gsl_matrix_float
します。
gsl_matrix_float *another_gsl_matrix;
struct params p;
要素は 1 つずつ埋められます。たとえば、
p.s=1;p.f1=0.2f;
プログラム中に、まったく関係のない機能another_gsl_matrix
が実行されます。しかし、その関数の後、 の値は!にp.s
変わります。0
奇妙なこと (私にとっては、知識が不足しているためだと思います!) は、構造体のメンバーの宣言の順序を変更すると (s
たとえば、構造体宣言の 2 番目またはその他の位置に移動する) ことです。 ) もう問題はなく、すべての値に問題はありません! したがって、たとえば、その関数中に配列の外側を指すなど、メモリの管理ミスが原因ではないと思います。
ここで何が起こっているのかを理解するのを手伝ってくれたら、とても感謝しています!