Compile y ejecute el programa sin main () en C

Estoy tratando de compilar y ejecutar el siguiente programa sinmain() funcionar enC. He compilado mi programa usando el siguiente comando.

gcc -nostartfiles nomain.c

Y el compilador da advertencia

/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340

Está bien, no hay problema. entonces, he ejecutado el archivo ejecutable (a.out), ambosprintf las declaraciones se imprimen correctamente y luego obtienenFallo de segmentación.

Entonces, mi pregunta es,¿Por qué falla la segmentación después de ejecutar correctamente las declaraciones de impresión?

mi código:

#include <stdio.h>

void nomain()
{
        printf("Hello World...\n");
        printf("Successfully run without main...\n");
}

salida:

Hello World...
Successfully run without main...
Segmentation fault (core dumped)

Nota:

Aquí,-nostartfiles El indicador gcc evita que el compilador use archivos de inicio estándar al vincular

Respuestas a la pregunta(2)

Su respuesta a la pregunta