我怎么知道 calloc 是否无法初始化

sam*_*ray 2 c calloc

我读过 calloc (malloc+init) 有时无法用零字节初始化数组(但仍会返回指向 malloc 数组的指针)。但在文档中它没有指定它将返回 NULL,有没有办法确保数组被初始化为零(然后遍历数组更好),如果不是, calloc 相对于 malloc 的优势是什么?

Mic*_*urr 5

如果calloc()返回一个非空指针,内存块将被归零。

除非你有一个有问题的图书馆。在这种情况下,您应该谨慎行事。也许可以考虑获得一个新的工具链,修复错误(大多数库都带有源代码)或编写您自己的calloc()on top版本malloc()或其他东西。

我认为这calloc()很有可能是坚如磐石的,除非你有一个绝对古老的、准标准的编译器,或者一些编译器的目标是非常非常小的系统,他们觉得需要偷工减料(我认为他们将有记录)。

  • 好吧,如果它成功分配了它,那么初始化就意味着成功了。如果您无法初始化(即写入)您似乎已分配的内存块,那么您将遇到更大的问题。 (3认同)