2017-10-04 33 views
-2

私はCプログラミングの新機能ですので、メモリ割り当ての概念が不思議です。標準出力への書き込みはメモリを割り当てますか?

標準出力への書き込みはメモリを割り当てますか?例えば

:メモリは、特定のファイルに割り当てられているので、この場合

write(fd, 'X', 1); //where fd is a specific file descriptor (not 1, 2 or 0) 

このコードは、FDにファイル対応の「X」文字を追加します。 しかし、ここで:

write(1, 'X', 1); 

は、割り当てられたメモリですか?はいの場合、どこですか?いいえの場合、なぜ標準出力に 'X'が表示されますか?

+2

これは完全に定義された実装です。なぜ質問するのですか? –

+0

あなたは特定のシステムをチェックすることができます。もしlinuxやOS Xを使っているのであれば、valgrindですばやく簡単に実行できます。 –

+1

それは私のために新しいです、私はちょうどそれがどのように機能するか興味があります。 –

答えて

2

これはメモリを割り当てますか?それはOSによって異なります。 OSは、データを保持するために内部の一時バッファを作成する必要があるかもしれませんが、再度データ用にあらかじめ割り当てられたスペースを使用する可能性があります。 OSをクラックさせずに動作させる方法を知る方法はなく、システムごとに、または実行ごとに異なる可能性があります。

割り振りを解除する必要があるメモリを割り当てますか? OSは自分の混乱をきれいにするので、あなたの視点からは何も解放する必要はありません。一般的に、明示的に割り当てるメモリを解放するだけで済みます。そのようなシステムコールは、その責任をあなたに割り当てません。

この問題はありますか?おそらくそうではありません。典型的には、大量のメモリを転送し、関連するパフォーマンスヒットを見て、何が起こっているのかを調査するようになった場合にのみ、これについて心配する必要があります。

+0

ありがとう!これは私が欲しかったものです。 –

関連する問題