Malloc'ed字符串包含垃圾值

Sam*_*Sam 0 c malloc objective-c

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

这是我得到一个错误的点.

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

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

char *theString = malloc(SOME_SIZE * sizeof(char));
Run Code Online (Sandbox Code Playgroud)

我会看到theString是\ x03而*theString是"3'\ 003'".

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

在正常处理方面,这很好.不幸的是,我不明白它是什么,否则,我只是做一些像切断第一个角色或其他东西一样的东西.

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

Jar*_*Par 9

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