我刚刚将Objective-C库转换为C库,希望能够跨平台。但是,在我发送这件东西进行处理之前,一切似乎都没问题。
这是我收到错误的一点。
回顾一些修改,我在调试器中发现了一些东西。
就像malloc'd字符串之后那样:
char *theString = malloc(SOME_SIZE * sizeof(char));
我会看到theString是\ x03而* theString是“3'\ 003'”。
我首先假设这只是奇怪的记忆,因为我没有任何strcat或任何东西,但奇怪的起始字符继续执行,并在我执行类似malloc的每个其他点重复。
就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只是做了一些像切断第一个角色或其他事情那样激烈的事情。
如果我想安全地将其转换为NSString,有人可以向我解释这是什么以及我如何处理它?</ p>
答案 0 :(得分:9)
malloc返回的值不保证设置为任何特定值。它只能保证指向您拥有的内存长度至少与您指定的长度一样长。如果你想让记忆初始化到某种价值,你需要自己做。或者使用calloc将内存清零。