Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

504
Vistas
Funciona bien en C++, pero error de tiempo de ejecución en C

Tengo este código aquí ::

 int f(int x, int *py, int **ppz) { int y, z; **ppz += 1; z = **ppz; *py += 2; y = *py; x += 3; return x + y + z; } int main() { int c, *b, **a; c = 4; b = &c; a = &b; printf( "%d\n", f(c,b,a)); printf( "%d\n", c); }

(Por favor, elija los archivos de encabezado en consecuencia)

Cuando ejecuto este código como un programa C++, funciona sin problemas. Pero, cuando lo ejecuto como un programa en C, completa su ejecución, imprime todos los valores, pero en la última línea del código, da un error de tiempo de ejecución. Adjunté un depurador y al final del programa (mientras ejecutaba este código en C) al hacer clic en Step-Over, me lleva a un archivo min_gw, que se parece a esto:

 __mingw_CRTStartup() __mingw_CRTStartup+208: mov %eax,%ebx __mingw_CRTStartup+210: call 0x407fb0 <_cexit> __mingw_CRTStartup+215: mov %ebx,(%esp) __mingw_CRTStartup+218: call 0x408088 <ExitProcess@4> __mingw_CRTStartup+223: nop

¿Qué es este archivo? ¿Y por qué falla el código en C?

Referencias de Ideone ::

C :: http://ideone.com/sDbqnI

C++ :: http://ideone.com/Ubb71k

Gracias por cualquier ayuda de antemano.. :)

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Todas las versiones de C++ y C desde C99 agregan un return 0; al final de la principal antes de caer al final.

C89 (que es el valor predeterminado para la mayoría de los compiladores) no lo hace, por lo que es UB si realmente regresa de main cayéndose del final.

Editar: en la práctica (suponiendo que se está ejecutando sin desinfectantes), esto significa que devolverá lo que sea que ya esté en $eax , es decir, el valor de retorno de la última función. Dado que printf generalmente devuelve un valor distinto de cero, eso se trata como una falla.

over 4 years ago · Santiago Trujillo Denunciar

0

Olvidó la declaración de devolución al final de main que indica el éxito.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda