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)