Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       malloc_get_state, malloc_set_state - malloc 実装の状態を保存/復元する

書式

       #include <malloc.h>

       void *malloc_get_state(void);

       int malloc_set_state(void *state);

説明

       注意: これらの関数は glibc バージョン 2.25 で削除された。

       malloc_get_state()  関数は malloc(3) 内部のすべての管理用変数を記録する (ただし、 ヒープの
       実際の内容と malloc_hook(3) 関数ポインターの状態は記録されない)。 状態は malloc(3)  で動的
       に確保されたシステム依存の  opaque な (内部構造は分からない) データ構造体に記録され、 関数
       の結果としてそのデータ構造体へのポインターが返される (このメモリーは呼び出し元が責任をもっ
       て free(3) する必要がある)。

       malloc_set_state()  関数は、  malloc(3)  内部のすべての管理用変数を state が指す opaque な
       データ構造体から復元する。

返り値

       成功すると、  malloc_get_state()  は新しく割り当てられたデータ構造体へのポインターを返す。
       エラーの場合            (例えば、データ構造体に必要なメモリーが割り当てられなかったなど)、
       malloc_get_state() は NULL を返す。

       成功すると、 malloc_set_state() は 0 を返す。 実装が state  が正しく作成されたデータ構造体
       を指していないと検出した場合、  malloc_set_state() は -1 を返す。 state が参照するデータ構
       造体のバージョンがこの実装が認識するバージョンよりも新しいと実装が検出した場合、
       malloc_set_state() は -2 を返す。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌────────────────────┬───────────────┬─────────┐
       │インターフェース属性      │
       ├────────────────────┼───────────────┼─────────┤
       │malloc_get_state(), │ Thread safety │ MT-Safe │
       │malloc_set_state()  │               │         │
       └────────────────────┴───────────────┴─────────┘

準拠

       これらの関数は GNU による拡張である。

注意

       これらの関数が役に立つのは、 この  malloc(3)  の実装が共有ライブラリの一部として使用され、
       ヒープの内容が何か他の方法で保存/復元される場合である。   この手法は  GNU  Emacs  が「ダン
       プ」関数 ("dumping" function) を実装するのに使用されている。

       これらの関数がフック関数ポインターの保存と復元を行うことはない。 ただし、 2 つ例外がある。
       malloc_get_state()  が呼び出された際に  malloc チェック (mallopt(3) 参照) が使用中の場合、
       malloc_set_state() は可能なら malloc チェックフックをリセットする。 また、  保存された状態
       の malloc チェックが使用中でないが、 呼び出し元が malloc チェックを要求していた場合、 フッ
       クは 0 にリセットされる。

関連項目

       malloc(3), mallopt(3)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの
       説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。