これは初めてのことですが、brk
とsbrk
の正確な違いを簡単な例で教えてください。 2つのいずれかから選択する効率要因はありますか? malloc
およびnew
は、内部でbrk
またはsbrk
を呼び出します。brkとsbrkの違い
答えて
int brk(void *addr);
BRK()は ADDRで指定された値は、その値が妥当である場合、システムは 、十分なメモリを有し、プロセスは、その最大データサイズを超えない場合にデータセグメントの終わりを設定します。
成功すると、brk()はゼロを返します。エラーの場合、-1が返され、errno がENOMEMに設定されます。
void *sbrk(intptr_t increment);
sbrkの()増分バイトプログラムのデータ空間をインクリメントします。 現在の のプログラムブレークの位置を見つけるために、0のインクリメントでsbrk()を呼び出すことができます。
成功すると、sbrk()は直前のプログラムブレークを返します。 (ブロック が増加した場合、この値は新たに割り当てられたメモリ の開始位置へのポインタになります)。エラーの場合、(void *)-1が返され、errnoは がENOMEMに設定されます。
brk
sbrk
それをインクリメントし、データ・セグメントの上限を設定します。古代Unixではmalloc/free
がsbrk
であった。例えば、OSXはbrk/sbrk
を使用してヒープ割り当てを管理するのではなく、mmap
,brk/sbrk
が存在しますが、小さなメモリセグメントのエミュレーションだけです。これはLinuxでほぼ同じです(ソースコードはbrk/sbrkからmmapへの移行の歴史を述べています)。
あなたの説明をありがとう。まだ少し混乱している、プロセスが作成されたときにデータセグメントがある限界に固定されている。セグメントがNのサイズを持っている場合brkはNのサイズで上限を設定できます。またはBRkの場合は上限のサイズをN.sbrkインクリメントデータセグメントのサイズより大きく設定できます。事前に感謝 – user3227126
上限はa..limitです。基本的にヒープはありませんので、データセグメントは最小限に抑えられますので、割り当て(brk/sbrkなど)によっては最大限まで増やすことができます。いくつかのシステムの制限を変更できますが、brk/sbrkの目的ではありません。ヒープはデータセグメントが管理される方法です(割り当てと穴はすべてデータセグメントにあります)。 –
ありがとうございました.... Jean-BaptisteYunès – user3227126
- 1. brkとsbrkは何を表していますか?
- 2. gccでbrk()/ sbrk()を使用する方法
- 3. 仮想メモリとsbrk
- 4. アセンブリ内のsyscallとしてのLinux sbrk()
- 5. bashスクリプトのsegfaults on brk()
- 6. ノードインスペクタ - debug-brkが最初の行で破損していない
- 7. "node --debug"と "node --debug-brk"が無効です
- 8. カーネルソース - brk()が定義されているファイル
- 9. i386 LinuxでのアセンブリでのBRKの呼び出し
- 10. アライメント問題ポインタにsbrkの結果を代入 - K&R
- 11. sbrk()はどのように機能しますか?
- 12. 関数はtcmallocのc-sbrkでラップします
- 13. ノードを起動する--inspect/--debug-brkを環境変数
- 14. NativeScript Extension VSコードデバッグ:--debug-brkを無効にするには?
- 15. {!!の違い!!}と{{}}
- 16. 「 '」と「'」の違い
- 17. 違いダウンケースとダウンケースの違い! Rubyで
- 18. Open GL ES - GLenumとGlintの違いとGLintとGLsizeiの違い
- 19. PythonとPandasの違いの相違点
- 20. Kernighan&RitchieのStorage Allocator実装プログラムのTDM-GCC - sbrk()への未定義参照
- 21. "!"の違いと "。"オペレータ
- 22. g ++との違い
- 23. "?"の違いと "@"ビジュアルベーシック
- 24. $ @と$の違い! perl
- 25. Kafka - DefaultPartitionerとMessageKeyの違いとカスタムパーティショナーの違い
- 26. タグとロールの違い - タグとロールの違い
- 27. posix_memalignとmmapとの違い
- 28. OAuth2とOmniauthとの違い
- 29. とnewgemとの間違い
- 30. Node.jsとtomcatとの違い
http://man7.org/linux/manage/man2/sbrk.2.html –