全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2607
推到 Plurk!
推到 Facebook!

請問執行程式時出現EStackOverflow該如何解????

尚未結案
tina623
一般會員


發表:9
回覆:2
積分:2
註冊:2005-01-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-07 13:26:04 IP:203.75.xxx.xxx 未訂閱
不好意思,請各位大大    我碰到一個問題,我的User在Windows98環境下執行程式會出現(一開啟時) EStackOverflow,可是換成Windows2000的就沒這個問題?    我參考了幾個大大討論的EStackOverflow解決方式,但對我的程式來說, 好像都沒解    不知道,有沒有大大遇到過這樣的問題,有解嗎?
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-07 14:13:18 IP:211.20.xxx.xxx 未訂閱
Delphi說明裡找得到答案唷! 還解不出的話,麻煩trace出錯的那段程式出來讓各位大大診斷吧! Description EStackOverflow is raised when the current thread? stack grows into the final guard page?hat is, when the system cannot grow the stack dynamically. This can happen because of extremely large local variables, deeply recursive routines, or invalid assembly-language code. As a descendant of EExternal, EStackOverflow saves the Windows exception record (if there is one) in its ExceptionRecord data structure. 忙盲茫
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-09 16:58:01 IP:210.201.xxx.xxx 未訂閱
堆疊滿到爆,都跟函式或程序有關,引用 tony 提供的內容: This can happen because of extremely large local variables, 妳不可能使用超大本地變數吧? deeply recursive routines, 超多次重複的遞迴很有可能! or invalid assembly-language code. 妳用組合語言,機會應該不太吧? 因為妳的程式能在 2000 下執行,所以第三個可能就不合理。 我想應該是第二個可能性比較大。再者,如果能在 2000 執行,但卻不能在98執行,這意味著2000 跟 98 對堆疊的分配有體積上的不同,2000 分配較多,98分配較少。我想妳還是檢查看看程式中有沒有使用超囉嗦的遞回函式。 我是儘量不踫遞迴的人,因為無論是別人看自己的程式,或者自己隔一段時間再看以前寫的程式,遞迴都比較難一眼看出執行目的,有時,看已經寫好的程式,比寫程式還要累。
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-09 18:09:24 IP:61.141.xxx.xxx 未訂閱
1- 您的程式是否用了递归?如果用了,有一直递归下去跳不出来,可能会让Stack被消耗尽; 2. 您的程式里是否用了类似 while 这样的语句,是否因为某种原因跳不出 while 这样的循环,并在循环里有语句会消耗Stack,导致Stack被消耗尽。
系統時間:2024-05-02 13:25:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!