この質問は、なぜ malloc() または new が NULL を返さないのですか?のフォローアップです。C++ でメモリを割り当てる際のSIGKILL :
そこの答えから、によって「正常に」割り当てられたメモリに書き込もうとすると、プログラムが強制終了される理由を理解できますmalloc
。ただし、calloc
(SLCおよびUbuntuで)使用すると同じ問題が発生します。
NULL ポインターを返す代わりに、プログラムは SIGKILL されるため、戻り値をチェックしてcalloc
も無駄です。しかしcalloc
、「オーバーコミット機能」の影響を受けるべきではありませんか? malloc
(裏方に頼らなければ…)