-4

私はこの構造体を持っています:

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)

4

1 に答える 1