gpt4 book ai didi

c - 执行 free() 时出错,显示 "glibc detected double free or corruption"

转载 作者:行者123 更新时间:2023-11-30 18:29:11 28 4
gpt4 key购买 nike

我正在尝试使用我通过 malloc() 手动分配的数组来运行程序。我在程序末尾释放()这个数组,但我不断收到错误消息 *** glibc detector *** ./test: double free or Corruption (!prev): 0x0000000002177010 ***

这是我的主要内容:

int main(int argc, char** argv)
{
pthread_t t1, t2, t3;
int i = 1;
int k = 0;
Client* clients;
clients = (Client*) malloc((nbClients+1)*sizeof(Client));
for (i = 1; i <= nbClients+1; i++)
{
printf("\n----TICKET%d----\n", i);
clients[i].panier = (int*) malloc(nbArticles*sizeof(int));
achats(clients[i].panier, &clients[i].ticket);

for (k = 0; k < nbArticles; k++)
{
printf("panier[%d] = %d\n", k, clients[i].panier[k]);

}

pthread_create(&t1, NULL, calcMACL, &clients[i]);

//calcMQUAD(clients[i].panier, &clients[i].ticket);
//calcMACL(clients[i].panier, &clients[i].ticket);
//calcMCUBE(clients[i].panier, &clients[i].ticket);

pthread_join(t1, NULL);
//free(clients[i].panier);

}

free (clients);




return 0;
}

感谢您的帮助

最佳答案

何时 free()失败是因为程序中存在一些由错误引起的内存损坏。

在这种情况下,是因为循环for (i = 1; i <= nbClients+1; i++)访问数组越界。

关于c - 执行 free() 时出错,显示 "glibc detected double free or corruption",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338329/

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