login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[C] Mogelijk memory leak?

Offline OceanIdiot - 07/11/2010 20:57 (laatste wijziging 08/11/2010 15:59)
Avatar van OceanIdiotNieuw lid Hallo, zit in deze code een memory leak? Want ik allocate memory voor een c-style string, maar ik return die string later waardoor ik 'm niet kan freeen..

  1. char* append(char *dest, const char *src)
  2. {
  3. int i, j = strlen(dest);
  4. char *str = (char *)malloc(sizeof(*str)); // Memory vrijmaken
  5.  
  6. strcpy(str, dest);
  7.  
  8. for(i = 0; src[i] != '\0'; i++)
  9. {
  10. str[i+j] = src[i]; // Karakters toevoegen
  11. }
  12. str[i+j] = '\0'; // Null terminator toevoegen
  13. //free(str); // --> Als ik hier free, kan ik str niet meer returnen.
  14. return str;
  15. }
  16. int main()
  17. {
  18. char * str1 = "Hallo";
  19. char * str2 = " Wereld!";
  20.  
  21. printf("%s\n", append(str1, str2));
  22. }


Is hier sprake van een lek? Zoja hoe kan ik het oplossen?
Alvast bedankt!

1 antwoord

Gesponsorde links
Offline Stijn - 08/11/2010 21:01
Avatar van Stijn PHP expert Alle lokale variabelen worden gewist van de stack van zodra "return" gecalled wordt (i, j, str, dest en src dus). Ik zie geen memory bug hier op het eerste gezicht.

De eerste twee regels kan ik moeilijk volgen van je functie. Vooral die malloc() want sizeof() van een char pointer is 4 bytes, terwijl ik denk dat je beter malloc(strlen(dest) + strlen(src)) zou doen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.178s