Boehm GCを使おう
C++を使うと,コンストラクタ/デストラクタが使えるので,多少 メモリ管理が楽になる.しかし,この場合も new したものを delete するのはプログラマの責任であって,基本的にはCの場合と大差ない.
ところが,このメモリ管理をプログラマが全然面倒見なくてすむ 画期的な方法がある.それがBoehm GCだ.
C++で使うと、ちょっと肥えすぎるけど
Cでは、これがないと何かと面倒。
例えば怪しげな方法でメモリを確保する時なんかは…
void name_malloc(category *cate, int num)
{
int l;
cate->name = malloc(num * (sizeof(char *)));
for(l = 0; l < num; l++) {
cate->name[l] = malloc(num * (sizeof(char)));
}
}
とこんな感じになる。
以前書いた物をそのまま流用したけど、これだけだと何に使うかわからないね。
要素数分の二次元配列を確保する関数です。
文字列を入れるためのものというのは自明だけど、指定された要素数と文字列長が同じというあたり手抜きな感が否めない。
#numが60なら縦横60の正方形っぽい(あくまでイメージ)
#二次元配列になる
#ちなみに、基準はあくまで要素数で、文字列長ではない。
#文字列長が足りなければreallocする事にしていたが
#要素数より文字列長の方が短い場合が殆どだったという妙な環境
GCを使うと、あれこれ悩まなくても良いという点で大助かり
これの開放はとっても面倒、このプログラムは常駐型ではなく一回実行したらすぐ終了するタイプだったので開放は行わずほったらかした(爆