[C] malloc,vasprintf
2012/02/19
malloc
mallocのman pageによると, 以下の記載があります.とりあえず, vmさんがOOM killer発動しにくいようにしておいた方が良いでしょうね..
OOM killer自体も殺しておいた方が良いでしょう ;)
バグ デフォルトでは、Linux は楽観的メモリ配置戦略を用いている。つまり、 malloc() が NULL でない値を返しても 、 そ のメモリが実際に利用可能であることが保証されない。これは本当にまずいバグである。システムがメモリ不足状 態になったとき、悪名高いメモリ不足解決器 (OOM killer) によって一つまたは複数のプロセスが削除される。突 然 あ るプロセスが削除されるのが望ましくない状況で使用されていて、しかもカーネルのバージョンが十分に最近のも のであれば、このメモリを割り当て過ぎる動作 (overcommitting behavior) を以下のコマンドで無効にできる。 # echo 2 > /proc/sys/vm/overcommit_memory カーネルの付属文書の vm/overcommit-accounting と sysctl/vm.txt も参照のこと。
int vasprintf(char **strp, const char *fmt, va_list ap);
GNU拡張の関数。stdio.hで使える。メモリ不足などのエラーは-1を返す。
strpにallocしてくれるのね、便利ですね。free()忘れないように。