>>397
動的確保のアロケータ書いたことあるなら分かると思うけど、確保より開放が重い。
ある処理でいくつか(最大値は分かっている)動的確保する必要があって、
終わった後に全部いらなくなるってことはよくある。
例えば1フレーム中で動的確保するが次のフレームではまったくそれらを流用しない、というような場合。
以下のようなアロケータはその手の定石。

static unsigned char gHeapBuf[1024 * 256];
static unsigned char *gHeapPtr;
void init(void) { gHeapPtr = gHeapBuf; }
void *alloc(size_t nbyte) { return (void *)((gHeapPtr += nbyte) - nbyte); }
void free(void *) { /* nop */ }