Différence entre malloc et realloc?

Supposons que j'ai deux exemples de code pour la création d'un tableau d'entiers de 10 éléments:

int *pi = (int*) 0xDEADBEEF; 
realloc(pi,10);

et l'autre est celui qui est écrit normalement, c'est à dire:

int *pi;
pi= malloc(10*sizeof(int));

Maintenant, ma question est la suivante: Le premier type de cession est légal, mais pas utilisé. Pourquoi, bien que je puisse obtenir le point de départ de mon choix?
Iniitialization de pointeurs avec des constantes sont légales, mais pas utilisé. Pourquoi?

source d'informationauteur deeiip | 2012-11-12