0

我刚刚将一个 Objective-C 库转换为一个 C 库,希望它能够跨平台。但是,在我将这件事送去处理之前,一切似乎都还不错。

正是在这一点上我得到了一个错误。

回顾一些修改,我注意到调试器中有一些东西。

就在这样的 malloc 字符串之后:

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

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

起初我认为这只是奇怪的记忆,因为我没有使用 strcat 或任何东西,但是那个奇怪的起始字符会继续存在,并且在我执行类似 malloc 的每个其他点重复出现。

就正常处理而言,这很好。不幸的是,我不明白它是什么,否则,我只会做一些激烈的事情,比如切断第一个字符或其他东西。

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

4

1 回答 1

10

malloc 返回的值不保证设置为任何特定值。它只保证指向您拥有的内存,长度至少与您指定的一样长。如果您希望将内存初始化为某个值,则需要自己进行。或者使用 calloc 将内存归零。

于 2009-05-28T03:30:51.077 回答