[問題] createthread送參數的問題

看板C_and_CPP (C/C++)作者 (かがみは俺の嫁。)時間15年前 (2010/11/29 23:56), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 為了解決thread單一參數的問題,我把數個參數包裝進一個struct 但送參數進createthread建立的thread時參數不正確(不是送進去才錯誤, 在沒有createthread時應正常的參數在多了createthread程式碼後出問題) 希望得到的正確結果: 參數正確 程式跑出來的錯誤結果: 於 0x01061116 的 OS10_project1.exe 中發生未處理的例外狀況: 0xC0000005: 寫入位 置 0xe1695075 時發生存取違規 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VC++2008, windows 有問題的code: (請善用置底文標色功能) int main(){ 宣告等等 for(int k=0 ; k<filtering_times ; k++) { for(int j=0 ; j<imgHeight ; j++){ for(int i=0 ; i<imgWidth ; i++) { arg1.w=i; arg1.h=j; arg1.color=MYGREEN; arg0.w=i; //arg0.w變成2685520 arg0.h=j; //arg0.h變成15857984 arg0.color=MYRED; //arg0.color變成2002957461 arg2.w=i; 去掉Createthread後測試 arg2.h=j; i,j;甚至arg0.w,arg0.j arg2.color=MYBLUE;arg0.color都是正常的 T[0]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE)myboxfilter, (LPVOID) &arg0, 0, &tid); T[1]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE)myboxfilter2, (LPVOID) &arg1, 0, &tid2); T[2]=CreateThread (NULL, 0,(LPTHREAD_START_ROUTINE)myboxfilter3, (LPVOID) &arg2, 0, &tid3); WaitForMultipleObjects(3, T, TRUE, INFINITE); DWORD myboxfilter(filter_arg f_arg) { /* box filter example */ int tmp=0; int a, b; int ws=(int)sqrt((float)FILTER_SIZE); //ws for sqrt mask size. for(int j=0 ; j<ws ; j++) for(int i=0 ; i<ws ; i++) { a = f_arg.w+i-(ws/2); b = f_arg.h+j-(ws/2); if(a<0 || b<0 || a>imgWidth || b>imgHeight )continue; tmp += filter_arr[j*ws+i] * pic_in[(b*imgWidth+a)*3+f_arg.color]; } tmp = tmp/filter_avg; if(tmp < 0)tmp=0; if(tmp > 255)tmp=255; pic_out[(f_arg.w*imgWidth+f_arg.h)*3+f_arg.color] = (unsigned char)tmp; return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.67.97

11/30 00:01, , 1F
DWORD myboxfilter(filter_arg f_arg) ...............
11/30 00:01, 1F

11/30 00:01, , 2F
tmp = tmp/filter_avg;
11/30 00:01, 2F

11/30 00:04, , 3F
DWORD myboxfilter(filter_arg* f_arg)
11/30 00:04, 3F

11/30 00:12, , 4F
....我很抱歉ˊˋ 這分類實在該選自刪的= =
11/30 00:12, 4F
※ 編輯: siriusu 來自: 140.113.67.97 (11/30 00:12)

11/30 00:18, , 5F
還有我竟然忘了說謝謝 謝謝:)
11/30 00:18, 5F

11/30 00:37, , 6F
要小心傳過去的指標指的物件的liveTime
11/30 00:37, 6F
文章代碼(AID): #1CyyqtzX (C_and_CPP)
文章代碼(AID): #1CyyqtzX (C_and_CPP)