C free (): неверный указатель, выделенный в другой функции
Я новичок в StackOverflow. Я учу C указатель сейчас.
Это мой код:
#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;
}
Я компилирую с: gcc -o main main.c
ошибка: свободна (): неверный указатель: 0xb77ac000 ***
что не так с моим кодом?