私はこの構造体を持っています:
typedef struct {
TypeCon *Pags;
// Some stuff
}TypeMem;
そして、Pags と呼ばれるこのポインタを malloc する関数があります。
void StartsTypeMem(TypeMem *Mem, int memorySize){
Mem->Pags = (TypeCon*) malloc(memorySize);
// Some stuff
}
次に、コードでこの TypeMem を使用しますが、完了したら Pags で free() を使用することはできません。私が理解したように、別の関数で malloc された配列を解放することはできません...しかし、わかりません...何が間違っているのでしょうか?
メイン()で:
TypeMem Memo;
StartsTypeMem(&Memo, size);
// Some stuff using the TypeMem
KillTypeMen(&Memo);
KillTypeMen は次のようになります。
void KillTypeMem(TypeMem *Mem){
free(Mem->Pags);
// Some stuff
}
エラーメッセージ(コメントから1つの回答まで):
* glibc が検出されました./smv: free(): 無効な次のサイズ (高速): 0x098db448 * * smv: malloc.c:2451: sYSMALLOc: アサーション `(old_top == (((mbinptr) (((char *) &((av) ->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~(((2 * (sizeof) (size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' が失敗しました。Abortado (imagem do núcleo gravada)