[問題] 不曉得為什麼會變空字串.

作者: newpeople059 (newpeople059)   2016-07-10 14:17:58
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
cocos2d-x 2.2.3 by VC++ 2012
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
libiconv
問題(Question):
刪掉看似無用的code後發現有問題
餵入的資料(Input):
"D:\testConvert\新增資料夾\testSprite.png"
預期的正確結果(Expected Output):
在cocos2d內顯示中文路徑
錯誤結果(Wrong Output):
空字串
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/T3p9lBjk
補充說明(Supplement):
這是一個使用iconv轉換編碼的fuction.
我整理code時將
char* pBuff = outbuf; 刪掉(我以為這排不需要.)
並將
str = pBuff;
改成
str = outbuf;
可是發現我得到的str會變成空字串. 為什麼會這樣呢?
還有 本來是 free(outbuf); 但run會出錯.
之後改成 free(pBuff);才可以跑.
有人知道這個pBuff做了什麼嗎?
作者: ilikekotomi (Young)   2016-07-10 15:26:00
我猜是outbuf的指標被移動了 你可以看看outbut在iconv前後只到的指標位置有沒有不一樣看GNU的敘述和header感覺他是有移動outbuf的位置更正 我是想表達指標指到的位置
作者: steve1012 (steve)   2016-07-10 16:22:00
聽起來是會動到oubuffer 所以要先把字串的頭記著 你free錯位置當然會出錯
作者: newpeople059 (newpeople059)   2016-07-10 19:11:00
outbuf在iconv後沒改變位置(前後都為空字串)反而是pBuff改了位置. 覺得很怪.更正 iconv後有改記憶體位置(空字串)pBuff沒改位置(內容改了)
作者: ilikekotomi (Young)   2016-07-10 19:58:00
那這樣就是問題的原因了 因為outbuf會指到不同位置所以才用pBuff去指向原本malloc的記憶體

Links booklink

Contact Us: admin [ a t ] ucptt.com