我有以下代碼:爲什麼printf在*(int *)(0)= 0時不起作用;存在
main()
{
printf("Hello world !");
*(int *)(0) = 0;
}
當我編譯該代碼並運行,它沒有打印字符串到控制檯。 在那之後,我修改了一點:
main()
{
printf("Hello world !\n");
*(int *)(0) = 0;
}
而且,它的工作!
我覺得神祕的背後,是*(int *)(0) = 0;
但不知道爲什麼!
Ps。我使用gcc 4.8.2來編譯。
控制檯輸出被緩衝,如果您在打印緩衝區之前崩潰,則會丟失其內容。 –
考慮到你改變的是被打印的字符串,而不是'*(int *)(0)= 0',你爲什麼認爲這行解釋了printf()的行爲改變? – Caleb