#include #include void func1(int *b){ b = malloc(sizeof(int)); *b = 1; return; } void func2(int **c){ *c = malloc(sizeof(int)); **c = 2; return; } int main(int argc, char **argv){ int *a = NULL; a = (int*) malloc(sizeof(int)); *a = 0; printf("%d\n", *a); func1(a); printf("%d\n", *a); func2(&a); printf("%d\n", *a); free(a); return 0; }
Odpowiedzi dostarczy analiza tego krótkiego programiku.
Przy okazji ten program zawiera błąd w postaci wycieku pamięci. W drugiej funkcji tracimy wskaźnik na zaalokowaną pamięć nie zwalniając jej.