acl4の開発ログ #01
2025.12.01(月) #0
- 結局このスタイルが一番書きやすいので、これにしました(笑)。整理してきちんと書くのはそのうちでいいやー。
- 標準関数の malloc/free/realloc の仕組みでは、mallocで得たメモリはどのメモリもreallocでリサイズする可能性があって、私はそれがちょっと不満です。
- リサイズするかもしれない時と、リサイズする予定が全くない場合とでは、保持しておかなければいけない情報が違うのです。標準関数のモデルを維持しようとすると、結局すべてのメモリを「リサイズするかもしれない」として扱う必要があって、まったくうまくありません。
- (なるほど、そうか。・・・ここに書くまで、自分が何に悩んでいたのかよくわかってなかったのですが、ここに書いたら分かってきました。)
- ということで、mallocで得たメモリをreallocでサイズ変更するっていうのはやめて、realloc用のメモリは別の方法で確保させることにします。
2025.12.01(月) #1
- acl4では、メモリをfreeするときもサイズを渡すことになっています。これはなぜかというと、解放する人はサイズを知っている場合がとても多いからです。
- 解放時にサイズが分かれば、mallocのチェーン内にサイズ情報を格納しておく必然性もなくなって、メモリ使用効率が改善します。
- だって4バイトとか8バイト程度の小さなメモリをmallocすることは、木構造みたいなものを扱うとよく出てきますが、そのたびにサイズ情報がヘッダとして追加されると、メモリ効率が悪くなるわけです。
- acl3やそれ以前でも「free時にもサイズを指定する」という仕様でやってきましたが、今のところずっとうまくいっていました。可変長オブジェクトの場合は、そのサイズを内部に持っておいて、解放時にそれを指定すればいいわけです。