gpt4 book ai didi

c - 双重释放或腐败(fasttop)

转载 作者:行者123 更新时间:2023-11-30 20:12:14 25 4
gpt4 key购买 nike

我正在清除以前的 malloc 中的内存,并且收到此错误:“./prot”中的错误:双重释放或损坏(fasttop)。我为某些结构分配了内存,但在尝试释放它们时遇到了此错误。这是我使用的结构:

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 树)。这就是我启动这个结构的方式:

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;

我做错了什么?

最佳答案

您正在尝试释放未动态分配的结构成员。

free (lista->prod);

关于c - 双重释放或腐败(fasttop),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36755481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com