Как я могу знать, если Calloc не удается инициализировать - PullRequest
2 голосов
/ 15 февраля 2012

Я прочитал, что calloc (malloc + init) иногда не сможет инициализировать массив с нулевыми байтами (но все равно будет возвращать указатель на массив malloc). но в документации не указано, что он вернет NULL, есть ли способ убедиться, что массив был инициализирован нулем (лучше, чем переход по массиву), если нет, в чем преимущество calloc перед malloc

1 Ответ

3 голосов
/ 15 февраля 2012

Если calloc() возвращает ненулевой указатель, блок памяти будет обнулен.

Если у вас нет глючной библиотеки. В этом случае вы должны действовать осторожно. И, возможно, подумайте о получении новой цепочки инструментов, исправьте ошибку (большинство библиотек поставляются с исходным кодом) или напишите свою собственную версию calloc() поверх malloc() или что-то в этом роде.

Я думаю, что есть вероятность, что calloc() будет отличным, если у вас нет абсолютно древнего, предварительно стандартного компилятора или, может быть, какого-то компилятора, предназначенного для очень и очень маленьких систем, где они чувствовали необходимость срезать углы ( который я предположил бы, что они будут задокументированы).

...