RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [資訊電機] [問題][C++]2-D array與副程式中有副程式之問題   字型大小:||| 
cji82
鐵驢友〔中級〕
等級: 5等級: 5


 . 積分: 52
 . 文章: 169
 . 收花: 424 支
 . 送花: 132 支
 . 比例: 0.31
 . 在線: 1576 小時
 . 瀏覽: 2880 頁
 . 註冊: 6958
 . 失蹤: 511
 . 台灣國
#1 : 2005-5-31 12:31 AM     全部回覆 引言回覆

這位大大不知道是用哪種platform and compiler?
大大在function中宣告了4個200x200的 double type array
以 windows來說, sizeof(double) = 8,

8x200x200x4 = 1280000 bytes 約等於宣告一個1.2MB的local memory,
不知道大大所處的環境是否可以處理超過64K的memory accessing.
也有可能是stack不夠大,
這樣子的宣告有可能已經超出stack size.
雖然宣告1.2 MB的四個array在之後的幾個int前,
但有可能後面這幾個int的位子已經被compiler放到1.2MB以後, 這塊區域可能是OS在用的,
所以scanf到&l後就破壞了一些東西, 造成程式掛掉.

參考一下吧!



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
cji82
鐵驢友〔中級〕
等級: 5等級: 5


 . 積分: 52
 . 文章: 169
 . 收花: 424 支
 . 送花: 132 支
 . 比例: 0.31
 . 在線: 1576 小時
 . 瀏覽: 2880 頁
 . 註冊: 6958
 . 失蹤: 511
 . 台灣國
#2 : 2005-5-31 10:16 PM     全部回覆 引言回覆

我想這個問題本質在於大大所處的platform及所用的compiler
對於local variable and stack size memory management的能力,

大大可以考慮把原來這4個200x200的double array移到main()外面,
用global variable的方法來宣告再試試看, 也許不用reduce size也可以正常執行
當然前題是你的memory夠大, memory addressing可以超過1MB



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記

   



 



所在時區為 GMT+8, 現在時間是 2024-5-10 06:39 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.019421 second(s), 7 queries , Qzip disabled