[問題] 呼叫副程式,但是運作時是在不同的記憶體

看板C_and_CPP作者 (乖乖)時間11年前 (2013/02/23 17:22), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 請問我要如何讓我的ThreadFunc每次在呼叫副函式delayFun後, 副函式每次工作的 記憶體區塊並不是同一個, 而不是每次副函式都是在同一個記憶體區塊執行; 因為這牽涉到Delay時間, 如果都在同一個記憶體區塊工作的話, 舊的Delay time會被 新的Delay time給覆蓋掉, 造成第一個Delay時間還沒等待完成, 馬上就要執行下一個 動作了. 請問有什麼寫法可以解決這個問題嗎? 不一定要按照我的程式碼. 餵入的資料(Input): void *data, double timeDelay 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) void delayFun(void *data, double timeDelay) { double* number = (double*) data; printf("%f,%f\n", number[0], number[1]); Sleep(timeDelay); } UINT ThreadFunc(LPVOID pParamMain) { int count = 0; while(true) { if(count<1) { delayFun(imgData, 5000); } else { delayFun(imgData, 100); } count++; } return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.61.242.39

02/23 17:40, , 1F
看不懂你的問題.. 甚麼是舊的的 delay 被新的覆蓋掉 能否把
02/23 17:40, 1F

02/23 17:41, , 2F
你的症狀描述的更清楚一點?
02/23 17:41, 2F

02/23 18:56, , 3F
現在、本來就已經不同記憶體了
02/23 18:56, 3F

02/23 18:57, , 4F
timeDelay 是區域變數,放在堆疊不是全域,根本不會被覆蓋
02/23 18:57, 4F

02/23 23:28, , 5F
timeDelay都是獨立,data倒是比較有可能出問題
02/23 23:28, 5F

02/25 08:05, , 6F
這是作業?!
02/25 08:05, 6F
文章代碼(AID): #1HA8exlN (C_and_CPP)