我試圖運行一個程序,使用我用malloc()手動分配的數組。我free()此陣在我的節目的結束,但我不斷收到一個錯誤說*** glibc detected *** ./test: double free or corruption (!prev): 0x0000000002177010 ***
執行free()時出錯說「glibc檢測到雙免費或損壞」
這裏是我的主:
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;
}
感謝您的幫助
lmaooo是剛纔看到它,SRY我真的累了,我認爲 感謝你現在的工作 但我總是得到相同的值?這是正常的嗎? (我使用了一個隨機的int函數,並且它總是完全一樣) –
我沒有看到任何隨機數的生成。您未發佈的代碼中可能存在其他問題。 – usr
是的,它沒關係我糾正它(我沒有放任何種子),fanks –