Free memory allocated in function

Take this code, for example:

int *doSomething(void) {
    int *something = malloc(sizeof(int));
    return something;
}

int main() {
    int *point = doSomething();
    //code does something...
    free(point);
}

I am wondering if I need to free the memory allocated in doSomething(), for example, after return something;what do I need to do free(something);? Or does execution free(point);also clear something? Or maybe I need to do free(something);in a function mainbefore the code ends?

+4
source share
2 answers

, doSomething(), free(point) malloc() ed doSomething() , ( ), free() * alloc().

point main(), , point != NULL.

. , , , , , .

+4

, malloc free. , , free, malloc. ( main), , OS . free , , , .

, , :

int *p = malloc(...);
/* do some stuff */
p = malloc(...);

, malloc, ( , ).

-4

Source: https://habr.com/ru/post/1628633/


All Articles