我刚刚将 Objective-C 库转换为 C 库,希望能够跨平台。然而,在我将这件事发送出去进行处理之前,一切似乎都正常。
就在我收到错误的时候。
回顾一些修改,我注意到调试器中的一些东西。
就在 malloc 的字符串之后,如下所示:
char *theString = malloc(SOME_SIZE * sizeof(char));
我会看到 theString 是 \x03 而 *theString 是“3 '\003'”。
起初我认为这只是奇怪的记忆,因为我没有对它进行 strcat 或任何操作,但是奇怪的起始字符会继续存在,并在我执行类似的 malloc 的每个其他点上重复出现。
就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只会做一些激烈的事情,比如剪掉第一个字符之类的。
有人可以向我解释这是什么以及如果我想将其安全地转换为 NSString 我如何处理它吗?
malloc 返回的值不保证设置为任何特定值。它只能保证指向您拥有的长度至少与您指定的长度一样长的内存。如果您希望内存初始化为某个值,您需要自己完成。或者使用 calloc 将内存清零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)