Kiedy uruchomić następujący kod:strcmp zachowanie
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
p = strcmp(NULL,"foo");
return 0;
}
otrzymuję winy segmentacji. echo $? mówi 139. Ale kiedy uruchamiam
#include <stdio.h>
int main(int argc, char *argv[])
{
int p = 0;
strcmp(NULL,"foo"); // Note removed assignment
return 0;
}
Nie otrzymuję żadnych błędów segmentacji. Czy ktoś mógłby rzucić trochę światła?
Oto moja gcc info:
> gcc --version
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)
Nie wprowadziłem żadnych ustawień kompilatora, aby włączyć optymalizację, ale robi to automatycznie. Byłeś na miejscu. –
gcc ma SSA, która działa nawet bez włączonych optymalizacji. SSA może usunąć martwy kod. http://en.wikipedia.org/wiki/Static_single_assignment_form –