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

时间:2012-02-15 08:19:41

标签: c calloc

我已经读过calloc(malloc + init)有时会无法使用零字节初始化数组(但仍会返回指向malloc数组的指针)。但是在documentation中它没有指定它将返回NULL,是否有办法确保数组初始化为零(更好的是然后越过数组),如果不是calloc优于malloc的优势是什么? / p>

1 个答案:

答案 0 :(得分:3)

如果calloc()返回非NULL指针,则内存块将为零。

除非你有一个错误的库。在这种情况下,你应该谨慎行事。也许可以考虑获取一个新的工具链,修复错误(大多数库附带源代码)或在calloc()之上编写自己的malloc()版本。

我认为calloc()可能会坚如磐石,除非你有一个绝对古老的预标准编译器,或者某些编译器针对非常非常小的系统,他们认为需要切割角落(我认为他们会记录下来)。