Next: Reentrancy, Previous: Parameter Conventions, Up: GMP Basics [Index]
GMPが定義するmpz_t
のような多倍長数のデータ型は,データサイズとデータそのものへの
ポインタしか保持していませんので,データ量としては少ないものです。初期化を一度行うと,
GMPはメモリ領域についての管理を行うようになります。十分なメモリ領域を確保できない時にはいつでも
追加のメモリスペースを割り当てます。
mpz_t
型とmpq_t
型の変数は割り当てられたメモリ領域を減らすことはできません。
頻繁に割り当てを繰り返す愚を避けるためにはこの方が普通は良い訳です。逆にアプリケーション側で
ヒープ領域が必要になった時には,mpz_realloc2
関数を使って明示的に再割り当てが
できますし,不必要になった変数を消去することも可能です。
現状の実装では,mpf_t
変数に対しては,初期化の段階で精度に応じた固定サイズのメモリ領域を割り当てます。
サイズの変更は自動的には行いません。
全てのメモリ領域は,malloc
関数や同様のメモリ確保関数を使って確保するものですが,
使用する関数を変えることも可能です。詳細はCustom Allocationをご覧下さい。
スタックのための一時変数(alloca
関数で確保)も使用できますが,これもビルド時に変更
することができます。詳細はBuild Optionsを参照して下さい。