32

BrianKernighanとDennisRitchieによるCプログラミング言語を読み始めたところ、次のステートメントを見つけました。

この言語は、静的定義と関数のローカル変数によって提供されるスタック規律以外のストレージ割り当て機能を定義していません。ヒープやガベージコレクションはありません。

malloc()つまり、Cがヒープメモリへのアクセスを楽しんでいるのは、ヒープからメモリアドレスを返す関数が原因であるということですか?そして、malloc他の言語、おそらくアセンブリまたはBで書かれている必要がありますか?

これはばかげた疑いかもしれませんが、私はそれをクリアする必要があります。ありがとう。

4

4 に答える 4

3

言語で明示的に定義されたヒープはありません。ただし、実装では、動的に割り当てられたメモリに使用します。

ヒープを含むさまざまな種類の割り当てに関するこの議論を参照してください。

http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

于 2012-08-21T16:21:01.340 に答える
2

malloc は、オペレーティング システムのカーネルから割り当てられたメモリを取得します。すべての言語がこれを行います。これは、オペレーティングシステムがプログラムに利用可能なスペースがあることを確認する方法ですが、プログラム、特に C で記述されたプログラムが制限を超えようとすることを防止しないか、防止できない可能性があります。

于 2012-08-21T16:19:22.470 に答える