3 つの 2 次元配列を計算する必要があります。GMPライブラリを使用してアレイを初期化しようとしたとき。次のエラーが発生しました。
GNU MP: Cannot allocate memory (size=16)
Aborted (core dumped)
私のメモリは8GBです。t_column
は約 2500row
です。変数であり、10^7 を超える場合があります。コードの一部は次のようになります: (最後の for ループでエラーが発生します)
mpf_t **h;
mpf_t **t;
mpf_t **r;
h = (mpf_t**)malloc(sizeof(mpf_t *)*row);
t = (mpf_t**)malloc(sizeof(mpf_t *)*row);
r = (mpf_t**)malloc(sizeof(mpf_t *)*256);
int i, d, j;
for(i = 0; i < row; i++) {
h[i] = (mpf_t *)malloc(sizeof(mpf_t)*256);
}
for(i = 0; i < row; i++) {
t[i] = (mpf_t *)malloc(sizeof(mpf_t)*t_column);
}
for(i = 0; i < 256; i++) {
r[i] = (mpf_t *)malloc(sizeof(mpf_t)*t_column);
}
for(i = 0; i < row; i++) {
for(j = 0; j < 256; j++) {
mpf_init2(h[i][j], 8);
mpf_set_str(h[i][j], "0.0", 0);
}
}
どうすればこれを回避できますか? 他のライブラリがより優れたメモリ割り当て機能を備えている場合、私はそれを受け入れます。