Cuando ejecuto el siguiente código:comportamiento strcmp
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
p = strcmp(NULL,"foo");
return 0;
}
me sale error de segmentación. echo $? dice 139. Pero cuando ejecuto
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
strcmp(NULL,"foo"); // Note removed assignment
return 0;
}
No obtengo ningún error de segmentación. ¿Podría alguien arrojar algo de luz?
Aquí está mi información de gcc:
> gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)
Bueno, no hice ninguna configuración de compilación para activar la optimización, sin embargo, lo hace de forma automática. Usted fue perfecto. –
gcc hace SSA que funciona incluso sin optimizaciones habilitadas. SSA puede eliminar el código muerto. http://en.wikipedia.org/wiki/Static_single_assignment_form –