kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2011-09-28

Turbo C 2.0 的陣列大小限制

若在程式中使用大量的陣列元素,很容易產生 Array size too large in function main 錯誤,如下圖所示。


本例的結構體如下

    struct node{
        int period;        /* 期別 */
        int length;        /* 資料長度 */
        int numbers[60];    /* 資料 */
        int marks[60];        /* 標記 */
    };
    struct fnode{
        char fname[32];        /* 資料名 */
        struct node *data[100];    /* 資料長度 */
    };

在 main() 中宣告
    struct fnode tarData[5];
...
    tarData[0].data = (struct node*) malloc(100 * sizeof(struct node));
    tarData[1].data = (struct node*) malloc(100 * sizeof(struct node));

若大小超過 tarData[2] 就會發生上述錯誤了

 Array size too large in function main

其發生原因為Turbo C 2.0 它是16位元編譯器,最大定址能力是 2^16 = 65536
超過就會產生錯誤了

解決辦法

在試過許多方法後,我的建議是換一個32位元編譯器 = ="
這裡我建議使用 Dev C++ 5.0
網址 http://www.bloodshed.net/dev/devcpp.html
下載 SourceForge
它的優點很多,它是免費軟體,window 介面,可以寫視窗及命令列程式,支援 C & C++。

最重要的是我會陸續寫操作方法 ^ ^
無痛上手,這也是選擇工具的重要因素之一。

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)