Un poco de codigo de demostracion:
Código:
#include <windows.h>
#include <stdio.h>
void main()
{
char cadena[5] = "HOLA";
char *p;
p = cadena;
printf("%s\r\n", cadena);
//p tiene un nuevo valor, en nada afecta a cadena
p = (char*)malloc(sizeof(char));
free(p);
printf("%s\r\n", cadena);
p = cadena;
//p modifica directamente cadena y veremos el ultimo printf como va
(*(DWORD*)p) = (DWORD)malloc(sizeof(char));
free((void*)(*(DWORD*)p));
printf("%s\r\n", cadena);
}