2011-07-26 4 views
3

私はこれを聞いたことがあり、Web上での確認や反論を見つけることができませんでした。これは本当ですか?もしそうなら、どちらが限界ですか?それは通常コンパイラによって強制されますか?ansi Cはメモリ内のプログラムのサイズに制限を設けていますか?

+5

私はこれがアーキテクチャとOSに依存していると思いますが、ANSIが気にしたり気になるものはまったくありません。 – Joe

+0

@ジョー:私もそうだけど、私は同じことを期待する、[extern変数の数](http://stackoverflow.com/questions/6835718/does-ansi-c-place-a-limit-onプログラム中の外部変数の数)、または異なる変数名における最初の異なる文字の位置。両方の場合、ansiは、準拠したコンパイラがサポートしなければならないものの下限を指定します(それぞれ4095および31または32)。 ANSIはこれら2つのことを気にしているので、プログラムのサイズにも気を取られる可能性があります。 –

答えて

8

ANSI Cはそのようなことには関係ありません。

†5 環境のC99規格では、「メモリにプログラムをロードする」ことについても言及していません。

唯一の考慮事項は、言語/標準の基礎である抽象状態マシンに準拠するために環境が提供しなければならないことです。これは「メモリにプログラムをロードする」必要はありません - パンチカードのデッキからコードをスプールすることができます。

文字セットで表現さ制限がありますが

ソースコードサイズと複雑さといくつか他のもの - しかし、それらは、適合実装は受け入れなければならないほとんどの下限であり、、翻訳環境にない関係実行環境。

+1

実際、「プログラムのサイズ」が何であるかは定義していません。オブジェクトにはサイズがあります。特定の操作のためのオーバーヘッドに使用される関数や記憶装置などの他のものは、*どこか*の領域を占有する可能性が高いですが、言語そのものはサイズの概念を提供しません。 –

1

実行ファイルが大きすぎる場合はスラッシングが発生する可能性がありますが、実装固有の実行可能形式以外に最大サイズはありません。

関連する問題