я очищал память от предыдущих mallocs и я получил эту ошибку: Ошибка в `./prot ': двойной бесплатно или повреждение (fasttop). Я выделил память для некоторых структур, и я получил эту ошибку при попытке освободить их. Это те, которые я использовал Структуры:Double бесплатно или повреждение (faststop)
struct ProdutoN
{
char prod[MAXBUFFPROD];
int altura;
struct ProdutoN *esq;
struct ProdutoN *dir;
};
struct ArrayProd
{
ProdutoNP lista[26];
int tamanho[26];
};
Я создал неполный тип, называемый CatalogoProdutos
, что указует на структуру называется ArrayProd
. Внутри той же структуры я создал неполный тип, называемый ProdutoNP
, который указывает на структуру, называемую ProdutoN
(которая является деревом avl). Это, как я iniciated этот Структуры:
void inicializa(CatalogoProdutos l)
{
int i;
l=(CatalogoProdutos)malloc(sizeof(struct ArrayProd));
for(i=0;i<26;i++)
{
l->lista[i] = (ProdutoNP)malloc(sizeof(struct ProdutoN));
l->lista[i] = NULL;
l->tamanho[i]=0;
}
}
Это, как я пытался освободить это:
void freePNP (ProdutoNP lista)
{
if (lista == NULL)
return;
free (lista->prod);
freePNP (lista->esq);
freePNP (lista->dir);
free(lista);
}
void freeCP (CatalogoProdutos l)
{
int i;
if (l == NULL)
return;
for (i = 0 ; i < 26 ; i++)
freePNP(l->lista[i]);
free(l);
}
Определения неполных типов:
typedef struct ProdutoN *ProdutoNP;
typedef struct ArrayProd *CatalogoProdutos;
То, что я делать не так?
'l-> lista [i] = (ProdutoNP) malloc (sizeof (struct ProdutoN)); l-> lista [i] = NULL; 'что это означает? –
Было бы полезно опубликовать определения «ProdutoNP» и «CatalogoProdutos». – tinman
@SouravGhosh, я думаю, он просто хочет там протекать там :) – ddz