Why would this program crash ?

void ChangePointer(int *p)
{
p = new int;
*p = 10;
}
void CallChangePointer()
{
int *a = NULL;
ChangePointer(a);
*a = 1;
}