20.27 怎樣分配大於 64K 的數組或結構?

一台合理的電腦應該可以讓你透明地訪問所有的有效內存。如果, 你很不幸, 你可能需要重新考慮程序使用內存的方式, 或者用各種針對系統的技巧。

64K 仍然是一塊相當大的內存。不管你的電腦有多少內存, 分配這麼 一大段連續的內存是個不小的要求。標準 C 不保證一個單獨的對象可以 大於 32K, 或者 C99 的 64K。通常, 設計數據結構時 的一個好的思想, 是使它不要求所有的內存都連續。對於動態分配的多維 數組, 你可以使用指針的指針, 在問題 6.13 中有舉例說明。 你可以用鏈接或結構指針數組來代替一個大的結構數組。

如果你使用的是 PC 兼容機 (基於 8086) 系統, 遇到了  64K 或 640K的限制, 可以考慮使用 ``huge"  (巨大) 內存模型, 或者擴展或延伸內存, 或 malloc 的變體函數  halloc() 和 farmalloc(), 或者用一個 32 比特 的 ``平直" 編譯器 (例如 djgpp, 參見問題 18.3), 或某種 DOS 擴充器, 或換一個操作系統。

參考資料: [ISO, Sec. 5.2.4.1]; [C9X, Sec. 5.2.4.1]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)