Nieuw 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..
char* append(char *dest, const char *src)
{
int i, j = strlen(dest);
char *str = (char *)malloc(sizeof(*str)); // Memory vrijmaken
strcpy(str, dest);
for(i = 0; src[i] != '\0'; i++)
{
str[i+j] = src[i]; // Karakters toevoegen
}
str[i+j] = '\0'; // Null terminator toevoegen
//free(str); // --> Als ik hier free, kan ik str niet meer returnen.
return str;
}
int main()
{
char * str1 = "Hallo";
char * str2 = " Wereld!";
printf("%s\n", append(str1, str2));
}
char* append(char *dest, const char *src) { int i, j = strlen(dest); char *str = (char *)malloc(sizeof(*str)); // Memory vrijmaken strcpy(str, dest); for(i = 0; src[i] != '\0'; i++) { str[i+j] = src[i]; // Karakters toevoegen } str[i+j] = '\0'; // Null terminator toevoegen //free(str); // --> Als ik hier free, kan ik str niet meer returnen. return str; } int main() { char * str1 = "Hallo"; char * str2 = " Wereld!"; printf("%s\n", append (str1 , str2 )); }
Is hier sprake van een lek? Zoja hoe kan ik het oplossen?
Alvast bedankt!
|