構造体を動的メモリで確保したのですが、解放がうまくいきません。
#define NUM 20000
typedef struct{
..............
} KOZO;

int main()
{
int i;
KOZO **kozo;

for(j=0;j<100;j++) {
以下のコードをループさせる
kozo=(KOZO **)calloc(NUM,sizeof(KOZO *)) ;
for(i=0;i<NUM;i++){
kozo[i]=(KOZO *)malloc(sizeof(KOZO));
memset(kozo[i],0,sizeof(kozo[i]));
}
 このように、NUM個の構造体をmallocで確保して
ポインタをkozo[]に入れています。
****** この間に構造体のメンバに対して処理を行うコード *****
解放は
for(i=0;i<NUM;i++) free(kozo[i]);
free(kozo);
} /*for(j=0;j<100;j++)*/

どうも free(kozo[i]) ですべての領域を解放していないようなのです。
for(j=0;,,)ループの一回目は問題なく終了するのですが
二回目は解放のところでエラーがでます。

もう、3日間つまづいています。
どなた様か、よろしくご教授ください。