¿Cuál es el truco detrás de strcpy () / uninitialized char pointer este código?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void main ()
{
  char *imsi;
  unsigned int i;
  int val;
  char *dest;

  imsi = "405750111";

  strncpy(dest,imsi,5);

  printf("%s",dest);

  /*  i = 10; */
}

En el código anterior, con eli = 10 la asignación se comenta como anteriormente, el código funciona bien sin error. Cuando la asignación se incluye para la compilación, el error(Fallo de segmentación) ocurre enstrncpy (dest, imsi, 5);.

Al evitar la optimización a variablei (es decir.,volátil int i;), el error se borra incluso con la asignación (i = 10) incluido.

Respuestas a la pregunta(2)

Su respuesta a la pregunta