ciao, ho un incompresione sulla funzione malloc , e un problema con sizeof.

nel codice alloco dinamicamente , in un puntatore a char 5 byte , poi con strcpy gli "inserisco" una striga più lunga di 5 caratteri , non da nessun errore e funziona come
se la potesse contenere , ma dove viene salvata la stringa ? io mi aspetterei
un errore e il blocco del programma !
vorrei visuallizzare quanti byte sono stati allocati ,prima tramite la funzione malloc , poi
dopo la funzione relloc , avevo pensato a sizeof(puntatore) o sizeof(*puntatore) ,
ma mostrano lo stesso numero di byte , qualunque sia la quantità di memoria allocata!

se può essere utile , utilizzo ide devc++.

codice:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  char *x;

  char parola[]="parola_molto_lunga";

  x=(char*)malloc(sizeof(char)*5);

  //printf("byte allocati in x %d\n",sizeof(x));

  //come visuallizare quanti byte sono stati allocati ??

  strcpy(x,parola); //perche x può contenere più di cinque caratteri ?

  puts(parola);

/*
  x=(char*)relloc(x,sizeof(char)*20);

  printf("byte allocati in x %d\n",sizeof(x));

*/
  system("PAUSE");	
  return 0;
}