Miért jelez folyamatosan errort a programom?
A c programom itt található: [link]
Az a problémám, hogyha a Makefile-lal lefordítom a kódot, akkor mindig error-t ír ki, pontosabban Memory leak-et a copyra,decre és a copykeyre. Azonban ha valgrinddel átellenőrzöm a programom, akkor ott mutatja, hogy van 3 alloc és megvan a 3free is. Mi lehet a baj? Mit csinálok rosszul? Még nagyon kezdő vagyok a dinamikus memóriakezelésben, de szeretném megtanulni.
Minden kedves válaszolónak nagyon köszönök minden segítséget!
Hm, sikerült megoldanom, csak nem tudom, hogy miért működik. A 18. sorra írt ki errort, és ezt: Memory leak: copy, ugyanúgy a többi sztringre is, amihez allocot használtam, de így megoldottam, és már nem ír ki errort:
for (i=0;i<k;i++)
{
copykey[i]=toupper(key[i]);
}
for (i=0;i<k;i++)
{
if(!(isalpha(copykey[i])))//megcseréltem, a key helyett copykey-t tettem
copykey=NULL; //gondolom emiatt jó, de miért is kell NULL értéket adni neki?
return NULL;
}
Memory leak attól van hogy ha belép a 17. sorba, akkor a copy és copykey soha nem lesz felszabadítva, ezért a 17 sornál a return helyett előbb fel kéne szabadítani őket:
if(!(isalpha(key[i])))
return NULL;
belyett
if(!(isalpha(key[i]))) {
free(copykey);
free(copy);
return NULL;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!