2011-07-26 54 views
3

我已經被告知,並且無法在網上找到確認或反駁。這是真的?如果是這樣,那是什麼限制?它是否通常由編譯器強制執行?ANSI C是否對內存中的程序大小設置了限制?

+5

我期望這是瘋狂的架構和操作系統的依賴,而根本不是ANSI會關心或關心的東西。 – Joe

+0

@Joe:我會,但我會期待相同的,說[外部變量的數量](http://stackoverflow.com/questions/6835718/does-ansi-c-place-a-limit-on - 程序中的外部變量數量),或第一個不同字符在不同變量名稱中的位置。在這兩種情況下,ansi都指定了符合編譯器必須支持的下限(分別爲4095和31或32)。由於ANSI關心這兩個方面,它似乎也可能會關心程序的大小。 –

回答

8

ANSI C不關心這種事情。

在C99標準中,沒有任何內容可以在§5環境中討論「將程序加載到內存中」。

唯一的考慮因素是環境必須提供符合作爲語言/標準基礎的抽象狀態機。這並不需要「在內存中加載程序」 - 代碼可以從一副打孔卡中緩存。

上有字符集表達的限制,該代碼大小和複雜程度和其他一些東西 - 但這些大多是下界,一個符合標準的實現必須接受,並涉及到翻譯環境,而不是執行環境。

+1

事實上,它甚至沒有定義「程序的大小」可能是什麼。對象有大小。其他的東西,比如用於某些操作的開銷的函數和存儲,可能會佔用某處空間*,但是該語言本身不提供它們的大小可能的概念。 –

1

如果您的可執行文件太大,您可能會遭受抖動,但除特定於實現的可執行文件格式外,沒有任何最大大小。

相關問題