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

請問如何解決 out of stack 的問題 (2)

尚未結案
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-18 15:10:10 IP:140.124.xxx.xxx 未訂閱
請問 要診摸處理 long int[80000][80000]  的矩陣阿??? 之前的 int[80000] 是用project ->Option->Link->Max Stake size 來調stake 大小     但 現在遇到的更大了 請問還有什方法解決????    謝謝  
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-18 15:59:23 IP:140.135.xxx.xxx 未訂閱
danielkelly您好:    您要配置那麼大的陣列,其目的為何呢??    之前連結提到的3種方式您都試過了嗎??    http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29290 1.動態配置 2.調整設定 3.設成static 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-18 18:34:42 IP:140.124.xxx.xxx 未訂閱
我是要進行影像處理的運算拉~~~~ 會要設這摸大 是因為 我要讀取 320*246=77760的影像像素 灰階值  再利用取得的灰階值 pixel[80000] 進行運算 算出 co-variance matrix 變成      long int matrix[80000][80000] 的Symmetric matrix 啦 ~~ 前面的方法 我都試過了  2.調整設定 3.設成static 不行   1.動態配置 我看不太懂 不知道在我的情況要怎摸用 煩請指教       謝謝
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-18 18:53:46 IP:140.135.xxx.xxx 未訂閱
danielkelly您好:
引言: 我要讀取 320*246=77760的影像像素 灰階值 再利用取得的灰階值 pixel[80000]
您說的320*246是影像大小嗎?? 將pixel的陣列設成pixel[320][246]會不會比較方便使用押... 假如要設定成static long int pixel[80000][80000]; 我的可以耶 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-18 19:29:24 IP:140.124.xxx.xxx 未訂閱
320*246 是影像大小拉 不過 我一次要讀取 10 張影像 在進行運算 10*77760 所以 設成 [80000][80000] 較符合我的需求 int [80000][80000] complier 是會過 但再執行的時候就會有錯誤了~~~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-18 19:46:09 IP:140.135.xxx.xxx 未訂閱
danielkelly您好:   我覺得您的情況設成   int pixel[10][320][246]比較直覺吧...   piexl[0][0][0]就為第一張影像位置(0,0)的像素值      方便將您的錯誤訊息或是程式碼PO上來嗎??   讓大家幫您看看問題在哪邊...    順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-19 01:27:16 IP:140.124.xxx.xxx 未訂閱
ㄟ.... 歹勢 ..... 我沒把問題 說清楚  就是 我要 [ 一張圖  320*246=77760 個element] [....] [....] ... 10個矩陣 這樣子 有10張圖的矩陣資料 在求出平均   Mean matrix[320*246=77760 個element]   經過運算 最後求出 Co-variance matrix    一個矩陣   77760 column   [        ]   [        ]   } 77760 個row   [        ]   [        ]     程式碼如下    m=MDIChildCount,n=77760;  for(int i=0;i
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-19 02:09:50 IP:140.124.xxx.xxx 未訂閱
對不起喔 程式碼有點亂 在PO一下 for(int i=0;i
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-19 09:58:37 IP:61.230.xxx.xxx 未訂閱
引言: ㄟ.... 歹勢 ..... 我沒把問題 說清楚 就是 我要 #define imagewidth 320 #define imageheight 246 byte **image_frame[10]; byte **co_vari_matrix; [ 一張圖 320*246=77760 個element] image_frame[0] = (byte **)malloc(sizeof(byte*)*imagewidth); for(i = 0~(imagewidth-1)) { image_frame[0][i] = (byte *)malloc(sizeof(byte)*imageheight); } [....] image_frame[1] = (byte **)malloc(sizeof(byte)*imagewidth); for(i = 0~(imagewidth-1)) { image_frame[1][i] = (byte *)malloc(sizeof(byte)*imageheight); } [....] ... 10個矩陣 這樣子 有10張圖的矩陣資料 在求出平均 Mean matrix[320*246=77760 個element] 經過運算 最後求出 Co-variance matrix 一個矩陣 77760 column [ ] [ ] } 77760 個row [ ] [ ] co_vari_matrix = (byte **)malloc(sizeof(byte*)*imagewidth*imageheiht); for(i = 0~(imagewidth*imageheight-1)) co_vari_matrix[i] = (byte *)malloc(sizeof(byte)*imagewidth*imageheight); 程式碼如下 m=MDIChildCount,n=77760; for(int i=0;i因為是指標宣告,用完請記得free
int i,j,k;
for(i=0~9)
{
 for(j=0~(imagewidth - 1))
 free(image[i][j]);     free(image[i]);
}
for(k=0~(imagewidth*imageheight - 1))
 free(co_vari_matrix[k]);    free(co_vari_matrix);
藍色部份是小弟動態矩陣宣告方式,給你參考 題外問一下喔,你是做
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-19 13:47:48 IP:140.124.xxx.xxx 未訂閱
不好意思喔  什摸是
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-20 14:43:55 IP:61.230.xxx.xxx 未訂閱
引言: #define imagewidth 320 #define imageheight 246 unsigned char **image_frame[10]; unsigned char **co_vari_matrix; [ 一張圖 320*246=77760 個element] 第一張 image_frame[0] = new unsigned char*[imagewidth]; for(i = 0~(imagewidth-1)) { image_frame[0][i] = new unsigned char[imageheight]; } 第二張 image_frame[1] = new unsigned char*[imagewidth]; for(i = 0~(imagewidth-1)) { image_frame[1][i] = new unsigned char[imageheight]; } 第三張 .... Mean matrix[320*246=77760 個element] 經過運算 最後求出 Co-variance matrix 一個矩陣 77760 column [ ] [ ] } 77760 個row [ ] [ ] co_vari_matrix = new unsigned char*[imagewidth*imageheiht]; for(i = 0~(imagewidth*imageheight-1)) co_vari_matrix[i] = new unsigned char[imagewidth*imageheight]; 因為是指標宣告,用完請記得free
int i,j,k;
for(i=0~9)
{
 for(j=0~(imagewidth - 1))
  delete image[i][j]);     delete image[i];
}
for(k=0~(imagewidth*imageheight - 1))
  delete  co_vari_matrix[k]);    delete  co_vari_matrix;
malloc用習慣了,很難改.. 剛剛練習用new,滿好用的.. 改成這樣宣告,希望不會再out of stack
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-23 19:11:59 IP:140.124.xxx.xxx 未訂閱
謝謝 你的程式喔   有點抱歉 過了幾天才弄懂 有各地方想請問一下 未什摸要用
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-26 14:09:57 IP:61.230.xxx.xxx 未訂閱
danielkelly你好: unsigned char就是一個byte的意思,值的範圍0~255 你用int也可以,因為byte包涵於int之中,也就是範圍更大 不過因為是做影像,一個灰階像素範圍0~255,用一個byte就 夠了,不需要用到int來存,一般int = 4 byte,而你的矩陣 又這麼大,開一張圖的記憶體比例就變成1比16,所以能省則 省,程式跑起來才會又快又順
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-06-01 15:09:51 IP:203.160.xxx.xxx 未訂閱
抱歉ㄟ ... 因為前幾天都在忙 期末報告的事 到了現在才有空寫程式ㄟ  很謝謝 你的答覆喔 我已經對動態產生記憶體蠻了解摟 你提的用動態產生記憶體的方式 很像 是關係的電腦的虛擬記憶體大小 我用研究室的電腦
brant
一般會員


發表:1
回覆:64
積分:23
註冊:2003-04-07

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-06-02 10:30:01 IP:61.219.xxx.xxx 未訂閱
對不起恕我直言 會把4G用光光的設計方式應該是有根本上的錯誤 建議您從改善設計方式,換一種思考方式去處理您的問題 而不是一直執著於要一次把所有的資料都保留在記憶體內
danielkelly
初階會員


發表:36
回覆:108
積分:28
註冊:2003-05-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-06-04 10:40:51 IP:140.124.xxx.xxx 未訂閱
其實 能做到[200*200][200*200]的矩陣 就已經可以了 問題應該就此打注了 我只是有點好奇想知道 最大的極限 而已 樓上的大哥 指出了 我的思考盲點 不過 分數只能給一個人 我適用JerryKuo的方法 所以..... 希望別介意
系統時間:2024-05-18 6:38:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!