今更このご時世にC言語(C++でなく)におけるメモリ管理の話なんぞしてもという気はするが、かれこれ数年ほど使ってきてわりと便利だったので公開してみる。 要求される仕様は以下のような感じ。 開放忘れを防ぎたい 後処理などの手間を軽減したい 単純で癖のない仕様 削除するタイミングは管理したい そんなわけで、こんなのを使っている。 void *DP_Malloc(size_t size, void *owner); void DP_Free(void *p); 第2パラメータのownerに同じくDP_Mallocで得られたポインタを渡すと、そいつが親になる。親がDP_Freeされると、子も自動でDP_Freeされる。もちろん、子だけをDP_Freeで開放してもよいし、その場合は管理下から外れる。 Field *field = DP_Malloc(sizeof(Field), null); Mon