當前位置: 華文星空 > 知識

最短的可以造成崩潰且編譯器無法最佳化掉的 C++ 程式碼是什麽?

2020-09-18知識

長度為0。

樓上各位給出的程式碼都十分精彩,但假如就「能過編譯並生成可執行檔,並且可執行檔執行時會導致崩潰的程式碼」這一定義來說,最短的C++程式碼的長度是0,即空的".cc"檔。

操作過程如下(以linux命令列為例):

首先,建立空的".cc"檔。

$ touch empty.cc

之後用g++僅進行編譯與組譯,而不進行連結。

$ g++ -c empty.cc

再用ld命令手動進行連結。

$ ld empty.o ld: warning: cannot find entry symbol _start; defaulting to 0000000000400078

最後執行可執行檔,得到Segmentation fault。

$ ./a.out Segmentation fault ( core dumped)


註:以上均為linux命令列,實際C++程式碼長度為0。