8.14 我用一行這樣的代碼分配一個巨大的數組, 用於數字運算:
double *array = malloc(300 * 300 * sizeof( double ));
malloc() 並沒有返回 null, 但是程序運行得有些奇怪, 好像改寫了某些內存,
或者 malloc() 並沒有分配我申請的那麼多內存, 云云。
注意 300 * 300 是 90,000, 這在你乘上 sizeof(double) 以前就已經不能放
入 16 位的 int 中了。 如果你需要分配這樣大的內存空間, 你可得小心為妙。
如果在你的機器上 size_t (malloc() 接受的類型) 是 32位, 而 int 為 16 位,
你可以寫 300 * (300 * sizeof(double)) 來避免這個問題。
(參見問題 3.11)。否則, 你必須把你的數據結構分解為更小的塊,
或者使用 32 位的機器或編譯器, 或者使用某種非標準的內存分配函數。
參見問題 19.27。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)