Un puntero far se usa para indicarle al compilador que apunte mas alla de nuestro segmento de datos.
De esta forma podemos accesar a zonas de memoria que se encuentran fuera de el, como la memoria de video.
Tambien podemos alojar mas memoria que con un puntero normal (near) haciendo una llamada a farmalloc() en vez de malloc().
Por ejemplo, esto crea un puntero a la memoria de video en modos graficos VGA (compiladores Borland):
unsigned char far *Video=MK_FP(0xA000,0x0000);
y esto asigna 80000 bytes de memoria y luego las libera si tuvo exito:
char far *MuchaMemoriaEnDos=farmalloc(80000L);
if(MuchaMemoriaEnDos==NULL)
printf("No se pudo alojar la memoria\n");
else
{
printf("Se alojo correctamente la memoria\n");
farfree(MuchaMemoriaEnDos); /* Liberarla */
}
Saludos,
Endos.