我有这个结构:
typedef struct {
TypeCon *Pags;
// Some stuff
}TypeMem;
我有一个函数可以分配这个指针,称为 Pags。
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
}
错误消息(取自评论到一个答案):
* 检测到 glibc./smv: free(): invalid next size (fast): 0x098db448 * * smv: malloc.c:2451: sYSMALLOc: Assertion `(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)