作者newpeople059 (newpeople059)
看板C_and_CPP
标题[问题] 不晓得为什麽会变空字串.
时间Sun Jul 10 14:17:58 2016
开发平台(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做了什麽吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.50.11
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1468131481.A.853.html
1F:推 ilikekotomi: 我猜是outbuf的指标被移动了 你可以看看outbut 07/10 15:26
2F:→ ilikekotomi: 在iconv前後只到的指标位置有没有不一样 07/10 15:27
3F:→ ilikekotomi: 看GNU的叙述和header感觉他是有移动outbuf的位置 07/10 15:28
4F:→ ilikekotomi: 更正 我是想表达指标指到的位置 07/10 15:36
5F:推 steve1012: 听起来是会动到oubuffer 所以要先把字串的头记着 你fre 07/10 16:22
6F:→ steve1012: e错位置当然会出错 07/10 16:22
7F:→ newpeople059: outbuf在iconv後没改变位置(前後都为空字串)反而是 07/10 19:11
8F:→ newpeople059: pBuff改了位置. 觉得很怪. 07/10 19:12
9F:→ newpeople059: 更正 iconv後有改记忆体位置(空字串) 07/10 19:14
10F:→ newpeople059: pBuff没改位置(内容改了) 07/10 19:20
11F:→ ilikekotomi: 那这样就是问题的原因了 因为outbuf会指到不同位置 07/10 19:58
12F:→ ilikekotomi: 所以才用pBuff去指向原本malloc的记忆体 07/10 19:59