Código de modificación propia [C ++]

Estaba leyendo un artículo de la revista Codebreakers sobre el código auto modificable y había este fragmento de código:

void Demo(int (*_printf) (const char *,...))
{ 
      _printf("Hello, OSIX!n"); 
      return; 
} 
int main(int argc, char* argv[]) 
{ 
  char buff[1000]; 
  int (*_printf) (const char *,...); 
  int (*_main) (int, char **); 
  void (*_Demo) (int (*) (const char *,...)); 
  _printf=printf; 
  int func_len = (unsigned int) _main ­- (unsigned int) _Demo; 
  for (int a=0; a<func_len; a++) 
    buff[a] = ((char *) _Demo)[a]; 
  _Demo = (void (*) (int (*) (const char *,...))) &buff[0]; 
  _Demo(_printf); 
  return 0; 
}

Este código supuestamente ejecutó Demo () en la pila. Entiendo la mayor parte del código, pero la parte donde asignan 'func_len' me confunde. Por lo que puedo decir, están restando una dirección de puntero aleatorio de otra dirección de puntero aleatorio.

Alguien quiere explicar?

Respuestas a la pregunta(2)

Su respuesta a la pregunta