Что вызывает вывод «Hello», когда я включаю -O для gcc? Разве это не все-таки segfault (согласно этой wiki )?
% cat segv.c
#include <stdio.h>
int main()
{
char * s = "Hello";
s[0] = 'Y';
puts(s);
return 0;
}
% gcc segv.c && ./a.out
zsh: segmentation fault ./a.out
% gcc -O segv.c && ./a.out
Hello