Nauczyłem się w książce, że jeśli potrzebuję zwrócić wskaźnik z funkcji, używam malloc()
i otrzymuję pamięć ze sterty. Zastanawiam się, jak mogę free()
up pamięci przydzielonej po funkcji."malloc w funkcji lokalnej, wolna pamięć w magistrali" czy jest ok? W jaki sposób?
Czy mogę zrobić to, co zrobiłem w poniższym kodzie, aby zwolnić pamięć? Jeśli nie jest poprawny, jaki jest właściwy sposób na zwolnienie pamięci po funkcji?
int *Add_them_up (int *x, int *y)
{
int *p = (int *) malloc(sizeof (int));
*p = *x + *y;
return p;
}
int main()
{
int c = 3;
int d = 4;
int *presult = NULL;
presult = Add_them_up (&c, &d);
printf ("the result of adding is:%d\n", *presult);
free (presult);
return 0;
}
Proszę [zobacz, dlaczego nie przesyłać] (http://stackoverflow.com/q/605845/2173917) zwracanej wartości 'malloc()' i rodziny w 'C'. –
@shinhwa jest tu poważny problem, którego tu brakuje. –
@SouravGhosh Zignorowałeś poważny problem, mój przyjacielu. –