* kbcl0のページ#5 -(by [[K]],2019.05.05) ** (8) ここまでのまとめ -kbcl0ライブラリは、セキュリティ対策として以下のような特徴を持つライブラリです。 -''[1]'' ヒープメモリ使用量の集計機能 --kbcl0ライブラリでは、mallocの代わりのKMallocというクラスを提供していて、このクラスを経由してmalloc/freeすると本家のmallocよりも高速に処理できます。その上、このKMallocにはmalloc/free量を集計する機能があって、それを使うことで、プログラム中からその時点での使用量を容易に取得することができます。 --雰囲気としては、 clock() を二回実行して差を取ることで実行時間を確認するのと同じように、この「ヒープメモリ使用量の集計」を二度実行して差を取ることで、所定の処理の前後で消費メモリがどのくらい増えたのかや、メモリリークがないかなど、いろいろな確認が可能です。 --これによりメモリ管理系のバグを早期に発見することができ、安定した開発につなげることができます(メモリ管理周りのバグが後になって悪さをし始めた場合、たいてい発見に苦労するので)。 -''[2]'' AutoreleasePool(自動解放プール)機能 --メモリを確保するときに、このAutoreleasePoolのalloc関数を使って確保するようにすると、freeするタイミングについてプログラマが意識する必要はほぼなくなります。なぜなら確保できたメモリは直ちに指定された自動解放プールに登録されており、したがってこのプールがcloseされるタイミングですべてもれなく破棄されるためです。 --この機能により、多くのケースではややこしいメモリ管理をしなくてよくなり、とても気軽にプログラムを書くことができます。その上、メモリリーク(=解放忘れ)や解放にまつわるバグとも無縁でいられます。 -''[3]'' 可変長配列の提供 --C++のstr::vector的な機能を提供しています。一番の違いはメモリの確保にKMallocを利用していることで、高速で効率的に動作します。 --C++のstr::vector的な機能を提供しています。一番の違いはメモリの確保にKMallocを利用していることで、そのために高速で効率的に動作します。 * こめんと欄 #comment