→ EdisonX:你的邏輯不正確,從上到下掃到一半時,這時上半部的圖片就 07/13 20:16
→ EdisonX:變成下半部的圖片,再往下掃時,下半部去找上半部找到自己. 07/13 20:17
→ EdisonX:所以,從上而下掃一半,掃到對應的點做 swap. 07/13 20:18
→ EdisonX:!! sorry,沒看到你多用一個 buffer,略過上述推文 orz 07/13 20:19
→ jeff810123:我是想說跟邏輯座標和裝置座標之間的轉換有沒有關係? 07/13 20:47
→ pnpncat:貼一下錯誤的那張圖吧? 比較容易猜出問題所在 07/13 20:48
→ jeff810123:圖片網址 07/13 21:00
→ pnpncat:看來就像是 EdisonX 說的問題呀 你看你的函數呼叫 07/13 21:15
→ pnpncat:dest和src是不是同一個位址? 或者開watch檢查一下 07/13 21:16
→ pnpncat:另外 迴圈不要這樣寫 你的i和j寫反了 橫的應該在裡面 07/13 21:18
→ pnpncat:直的應該在外面才對 07/13 21:18
→ jeff810123:turnHDC(V_TURN, &dest_mdc , &src_mdc); 07/13 21:24
→ jeff810123:這是呼叫部分 07/13 21:25
→ pnpncat:你要追蹤dest_mdc和src_mdc怎麼來的呀 這樣的設計本身就 07/13 21:26
→ pnpncat:是錯的 因為你的函式對自我賦值的結果根本不對嘛 07/13 21:27
→ pnpncat:正確的作法是先malloc一塊tmp記憶體 翻轉貼過去 再將 07/13 21:29
→ EdisonX:疑!講起來 src,des 指向同一份記憶體的可能性頗大. 07/13 21:29
→ pnpncat:dst原來指向的記憶體free掉 再將tmp的指標丟給dst 07/13 21:30
→ pnpncat:這是所有這類函式的慣用寫法 要背起來的.......@@ 07/13 21:31
→ pnpncat:而且你應該傳reference才對 如果傳值 就要改用memcpy 07/13 21:34
→ pnpncat:去把整個tmp 拷貝回原來的 dst 了 07/13 21:34
→ jeff810123:pnpncat大大,您講的我有點難理解 07/13 21:40
→ pnpncat:你可以用一行 if (src == dst) 之類的來檢查自我賦值 07/13 21:40
→ EdisonX:那你方便把 HDC des_mdc, src_mdc , 取得的部份po上來嗎? 07/13 21:41
→ EdisonX:我覺得要檢討會較方 便。 07/13 21:42
→ pnpncat:但那不是治本之道 你的函式宣告本身就預示了逾界的風險 07/13 21:42
→ pnpncat:算了 我發文解釋吧^^" 07/13 21:43
→ jeff810123:我是傳兩個不同變數進去,為什麼會指向同一個記憶體是 07/13 21:43
→ jeff810123:是我不能理解的地方 07/13 21:44
→ EdisonX:兩個不同變數指向同一份記憶體,是時有所聞吧 ? 07/13 21:45
→ jeff810123:這樣結果是空白的,但直接用*temp = hdc結果就正確 07/13 23:39