* acl4_003: malloc/freeの拡張 -(by [[K]], 2025.11.28) ** (1) -C言語はmalloc/freeが弱いと思います。 -メモリリーク(開放忘れ)があっても気づきにくいですし、間違って二重freeをしたらmallocのチェインが壊れてめちゃくちゃになります。freeしたメモリにfree後にアクセスしても何も言われません。これを何とかしないといけません。 -これがC言語で放置されていたから、ガーベージコレクションやRustの所有権の概念が生まれて発達したのです(と私は思っています)。 -C言語がもっとしゃんとすれば、C言語だってまだまだ現役なのです(いやさすがにそれは無理かもしれない・・・ほかの言語が進んでいるところはここだけではないので)。 -acl4では、ADgbLv>=2であれば、これらをすべて検出します。 -acl4では、コンパイル時に検出するのではなく、実行時に検出します。したがって、コンパイル時に検出できるRustの所有権には劣ります。その代わり実行時検出にすることで、所有権という新しい概念は不要で、単に「確保したものを確実に返し、返した後に触らない」を守ればいいことになります。 ** (2) -acl4のメモリアロケータが持つ機能: --malloc, realloc, free --一括free用のmalloc, 一括free用のデストラクタ登録(一括freeではreallocは扱わない) --一括処理の移譲 --子アロケータの作成 --下請けアロケータとしてのmalloc, free -acl4の標準メモリアロケータ: --AMASystem : stdlibのmalloc/freeを呼ぶだけのもの --AMASimple : 一括開放以外では解放されたふりをすることで高速化 --AMAFixSiz : 特定の固定サイズに特化し、それ以外は親アロケータに移譲する