堆疊溢位 |
答題得分者是:taishyang
|
egghead253
一般會員 發表:25 回覆:13 積分:7 註冊:2009-05-01 發送簡訊給我 |
[code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { int a[7361][7361]; for(int i=1;i<=7361;i ) { for(int j=1;j<=7361;j ) //7361 { for(int x=1;x<=79;x ) { eg1=ADOQuery1->Fields->Fields[i]->AsString.ToDouble(); eg2=ADOQuery2->Fields->Fields[i]->AsString.ToDouble(); se=(eg1-eg2)*(eg1-eg2); e=(e se); } a[i][j]=int(sqrt(e)); e=0; ADOQuery2->Next(); } ADOQuery1->Next(); } } [/code] 請問一下先進如果發生了溢位有辨法解決嗎? |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
我記得 index 是從 0 計起 所以範圍是 0..7360 而非 1..7361 請確認一下. 另外, 7361*7361*4 會不會超過 2^32 ? 算數不好, 請您自行算一下
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-09-24 16:21:37, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
接連看到兩個相似的問題,在這篇「關於BCB的記憶體空間釋放」istillloving 所問的
和這一篇egghead253提的堆疊溢位是一樣的問題 在變數的生命週期與範圍及其實際佔用空間概念不清 程式設計本來就不是很難的事,東抄西改都能拼出一個雜燴出來 但是怎麼從陽春麵programmer 提升到牛肉麵programmer 關鍵是效能與穩定性 (效能不是靠提升硬體等級) 以egghead253 例子而言,loop 7361*7361*79 次,這樣的loop 對系統的影響要考慮到,也許用thread 讓系統比較順 不要放在Button1Click 裡 或是以preload 的機制,將資料庫的資料先放到double 陣列裡,運算時降低資料庫對速度的影響 這些只是參考,方法不只一種 在寫之前能想到,架構就會清楚明確 在寫之後才想到,若花點時間調整,也是OK的 總是比寫完後覺得會動就好這樣的心態好得多了 勉勵新手不要只是把程式寫出來就好,基礎功要練好... 否則只是害人害己 害人:系統不穩定讓人痛苦,交接給別人…讓別人痛苦 害己:怎麼找都找不到問題…讓自己痛苦 PS:GrandRURU所提的 vector 當然方便,但在速度上陣列還是比較快^^ ===================引 用 egghead253 文 章=================== [code cpp] void __fastcall TForm1::Button1Click(TObject *Sender) { int a[7361][7361]; for(int i=1;i<=7361;i ) { for(int j=1;j<=7361;j ) //7361 { for(int x=1;x<=79;x ) { eg1=ADOQuery1->Fields->Fields[i]->AsString.ToDouble(); eg2=ADOQuery2->Fields->Fields[i]->AsString.ToDouble(); se=(eg1-eg2)*(eg1-eg2); e=(e se); } a[i][j]=int(sqrt(e)); e=0; ADOQuery2->Next(); } ADOQuery1->Next(); } } [/code] 請問一下先進如果發生了溢位有辨法解決嗎? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |