「C言語/標準ライブラリ/stdlib.h」の版間の差分

削除された内容 追加された内容
個人的な意見は不要なので除去
115.37.37.234 (トーク) による版 116309 を取り消し。OSのメモリ管理との関連などを加筆。
タグ: 取り消し
324 行
 
よく、プログラム解説書では、callocやmallocなどによるメモリ確保は、よく借金に例えられる。借金をしたら、あとで返さないといけないように、メモリを確保したら、あとで解放しないとけいない。
 
:(※ 未確認のノウハウなど: ) mallocやcallocを使わない場合のメモリの管理は、そのOSの仕様にもよるが、普段はOSにメモリ管理の仕組みが任されてたりするのが通常である。このため、mallocやcallocの必要がないなら、mallocなどを使わないでも、かまわないだろう。おそらくmallocやcallocの用途としては、たとえば、メモリが不十分なハードウェアでも動作するようにしたい場合や、あるいは製造業などの組み込みソフトの開発でメモリを直接管理したい場合などに、mallocやcallocが用いられるだろう。
:もし malloc や calloc を用いた場合で、メモリ解法を忘れてメモリーリークが存在していても、けっしてプログラム実行環境は警告しないのが普通である。また、OSの仕様によっては、たとえ、その不具合プログラムを終了しても、メモリ解法されない場合もありうる。なぜならC言語の性質上、OSの制御にも用いられる言語であるので、OSのメモリ管理の権限を越えたコードなどもC言語では書けてしまうからである。
:このため、メモリーリークが他のプログラムの動作に性能低下などの悪影響を与える場合もありうる。もっとも、電源を落として(シャットダウン)して、再起動すれば、シャットダウン時にDRAM内のメモリ情報はいったん無くなるので、個人のパソコンでは、メモリーリークはあまり大問題にはならないだろうから、心配しすぎる必要もないだろう。
 
 
callocもmallocも、メモリ領域の占有に成功した場合、返却値として、占有に成功したメモリ領域の先頭アドレスを返却する。占有に失敗した場合、空ポインタを返却する。