C free (): puntero no válido asignado en otra función
Soy nuevo en StackOverflow. Estoy aprendiendo el puntero C ahora.
Este es mi código:
#include <stdio.h>
#include <stdlib.h>
int alloc(int* p){
p = (int*) malloc (sizeof(int));
if(!p){
puts("fail\n");
return 0;
}
*p = 4;
printf("%d\n",*p);
return 1;
}
int main(){
int* pointer;
if(!alloc(pointer)){
return -1;
}else{
printf("%d\n",*pointer);
}
free(pointer);
return 0;
}
Compilo con: gcc -o main main.c
error: libre (): puntero no válido: 0xb77ac000 ***
¿Qué tiene de malo mi código?