acl4_003: malloc/freeの拡張
(1)
- C言語はmalloc/freeが弱いと思います。
- メモリリーク(開放忘れ)があっても気づきにくいですし、間違って二重freeをしたらmallocのチェインが壊れてめちゃくちゃになります。freeしたメモリにfree後にアクセスしても何も言われません。これを何とかしないといけません。
- これがC言語で放置されていたから、ガーベージコレクションやRustの所有権の概念が生まれて発達したのです(と私は思っています)。
- C言語がもっとしゃんとすれば、C言語だってまだまだ現役なのです(いやさすがにそれは無理かもしれない・・・ほかの言語が進んでいるところはここだけではないので)。
- acl4では、ADgbLv>=2であれば、これらをすべて検出します。
- acl4では、コンパイル時に検出するのではなく、実行時に検出します。したがって、コンパイル時に検出できるRustの所有権には劣ります。その代わり実行時検出にすることで、所有権という新しい概念は不要で、単に「確保したものを確実に返し、返した後に触らない」を守ればいいことになります。
(2)