私はアロケータがC言語でできることについて混乱しています。アロケータは、必要に応じてヒープ要求を満たすために初期化されていないデータセグメントを使用できますか?
タイトルと同様に、アロケータは必要に応じてヒープ要求を満たすために初期化されていないデータセグメントを使用できますか?
私はアロケータがC言語でできることについて混乱しています。アロケータは、必要に応じてヒープ要求を満たすために初期化されていないデータセグメントを使用できますか?
タイトルと同様に、アロケータは必要に応じてヒープ要求を満たすために初期化されていないデータセグメントを使用できますか?
「メモリアロケータ」という用語は、C言語を定義する標準では意味を持ちません。しかし、彼らはCランタイムライブラリが提供しなければならない "メモリ管理関数"のセットを定義しているので、あなたが求めている関数であると仮定します。
基準はまた、場所を定義していないか、メモリが機能がmalloc
、calloc
、realloc
とfree
が存在し、指定された意味を持っている必要がありますだけであることから、割り当てられているにもか。したがって、どこからメモリを割り当てるかは、実装次第です。
「初期化されていないデータセグメント」という用語は、一般に、プログラムが使用するメモリ量をローダーが予約する必要があることを指定する、コンパイルされた実行可能ファイルのセクションを指します。
私が知っているすべての実装(または、少なくとも「初期化されていないデータセグメント」という用語が意味するもの)では、そのセクションは初期化されていない静的変数に使用されます。
ほとんどの実装では、Cランタイムはメモリにブロックを取得するためにOSカーネルを呼び出すことによってヒープを形成し、プログラムに割り当てます。
Linuxのプロセスメモリレイアウトについては、hereの説明があります。
まず、Cのアロケータが何であるか教えてください。 – DeiDei
メモリアロケータ – YINGYING
おそらく私はヒープアロケータと言うべきですか? – YINGYING