c - "malloc in local function, free memory in main" is it ok? How? -


this question has answer here:

i learned in book if need return pointer function, use malloc() , memory heap. wondering how can free() memory allocated after function.

is ok did in following code free memory? if it's not correct, what's correct way free memory after function?

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; } 

yes, code correct.condition apply, see note below

to free() allocated memory, need pass returned pointer malloc() , family.

as you're getting same pointer returned malloc() add_them_up () function , storing same in presult, in main(), can call

free (presult); 

without issues. carry out intended job.


note: you're missing 2 aspects here, e.g.

  1. please see why not cast return value of malloc() , family in c.
  2. always check success of malloc() before using returned pointer.

that said, suggestion, try use form

int *p = malloc(sizeof(*p)); 

which makes allocation statement independent of type of p, resulting in robust code.


Comments

Popular posts from this blog

html - Firefox flex bug applied to buttons? -

html - Missing border-right in select on Firefox -

python - build a suggestions list using fuzzywuzzy -