std ベクトルのメモリへのアクセスに問題があります。
最初に (ヘッダー ファイルで) 構造体を定義します。
typedef struct Systems {
// other variables...
vector <double> sum;
} System;
システムのアンサンブルが必要で、各ベクトルの合計には num double が含まれている必要があるため、メインに次のように記述します。
System * system;
system = (System*)malloc(DIM_ENSEMBLE*sizeof(System));
for (i =0; i< DIM_ENSEMBLE; i++) {
//...
system[i].part_sum.resize(num);
//...
}
この時点から、私が使用するとすぐに
System[0].part_sum[0]
ベクトルを初期化するために、セグメンテーション違反プログラムを受け取ります。
gdbの場合、私はしようとします
(gdb) print system[0].part_sum[0]
私は得る:
$2 = (double &) @0x200000003: <error reading variable>
サイズ変更の代わりに予約またはアロケータを使用しても同じエラーが発生します。ベクターの容量もチェックしました
cout << system[0].part_sum.capacity();
たくさんのスペースがあると思います...
何が起こっている?これはメモリ管理の問題ですか?
A.