[问题] 不晓得为什么会变空字串.

楼主: 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