2

calloc(malloc + init)がゼロバイトの配列の初期化に失敗することがあることを読みました(ただし、mallocされた配列へのポインターを返します)。しかし、ドキュメントでは、NULLを返すことを指定していません。配列がゼロに初期化されたことを確認する方法はありますか(配列を超えるよりも良い)、そうでない場合、mallocに対するcallocの利点は何ですか?

4

1 に答える 1

5

calloc()NULL 以外のポインターを返す場合、メモリのブロックはゼロになります。

バグのあるライブラリがない限り。その場合は慎重に行動する必要があります。そして、新しいツールチェーンを入手するか、バグを修正するか (ほとんどのライブラリにはソースが付属しています) 、または何かのcalloc()上に独自のバージョンを作成することを検討してください。malloc()

calloc()絶対に古い、標準化前のコンパイラ、または手抜きの必要性を感じた非常に小さなシステムを対象とするコンパイラがない限り、それは堅実なものになる可能性が高いと思います文書化されます)。

于 2012-02-15T08:23:10.283 に答える