Malloc'ed字符串包含垃圾值

时间:2009-05-28 03:27:17

标签: objective-c c malloc

我刚刚将Objective-C库转换为C库,希望能够跨平台。但是,在我发送这件东西进行处理之前,一切似乎都没问题。

这是我收到错误的一点。

回顾一些修改,我在调试器中发现了一些东西。

就像malloc'd字符串之后那样:

char *theString = malloc(SOME_SIZE * sizeof(char));

我会看到theString是\ x03而* theString是“3'\ 003'”。

我首先假设这只是奇怪的记忆,因为我没有任何strcat或任何东西,但奇怪的起始字符继续执行,并在我执行类似malloc的每个其他点重复。

就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只是做了一些像切断第一个角色或其他事情那样激烈的事情。

如果我想安全地将其转换为NSString,有人可以向我解释这是什么以及我如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:9)

malloc返回的值不保证设置为任何特定值。它只能保证指向您拥有的内存长度至少与您指定的长度一样长。如果你想让记忆初始化到某种价值,你需要自己做。或者使用calloc将内存清零。