AClass(名前) {
メンバの宣言
};AClass0(名前);
これ以降は「名前 *」が使えます。
AClass1(名前) {
メンバの宣言
};#define AClass0(nam) typedef struct nam##_ nam #define AClass1(nam) struct nam##_ #define AClass(nam) AClass0(nam); AClass1(nam)
| 名称未定#0 | 標準のmalloc/freeを呼ぶだけのクラスです。主に共通のインタフェースを提供するために用意されています。 |
| 名称未定#1 | 最初にかなり大きなサイズのメモリを親に対して要求します。そしてmalloc要求が来るたびにそのメモリを切り取って渡します。free要求が来てもそれはすべて無視します(!)。 |
| 名称未定#2 | あらかじめサイズを一つだけ設定しておきます。そのサイズでのmalloc/freeについては、内部で高速に処理します。それ以外のサイズについては、そのまま親に丸投げします。 |
| 名称未定#3 | 名称未定#2を内部に4つもったAMCで、4通りのメモリサイズに対してのみ高速化します。もしもっとたくさんのメモリサイズに特化したければ、このAMCを直列につなげばいいでしょう。 |