代码 – 高尔夫:编译和崩溃的最短程序是什么?
这有点儿乐趣 你能制定最短的程序,编译但是什么都不做,但是执行时立即崩溃吗? 因此,“崩溃”是指程序停止时出现错误情况(例如核心转储)。
有一种语言崩溃比C使用gcc编译器更快(7个字符)? [我留下这个答案让别人find。]
(应该可以使用编译器标志,否则7现在不行,编译器检查好多了。)
[评估结果]我无法标记一个单一的答案,因为有多个正确的多种语言。 将一个答案取消给另一个答案是不公平的。 请用选票select最佳答案。
巴 – 我可以在5个字符中崩溃C:
main;  这声明了一个名为“main”的隐式intvariables。 这是全局性的,所以variables的初始值为0 。 这是C名称没有装饰 – 所以链接器没有意识到,这是一个变种,而不是一个function。 
海湾合作委员会给了我一个警告 – 但就是这样。
 $ gcc crash.c crash.c:1: warning: data definition has no type or storage class $ ./a.exe Segmentation fault (core dumped) $ 
 碰撞0字符: 
 $ > golf.c $ gcc -Wl,--defsym=main=0 golf.c $ ./a.out Segmentation fault 
我想知道这是否重要…
 a 
这是在JavaScript中。 这给出了“未find对象”的运行时错误。 由于JavaScript是一种dynamic语言,在语法上这实际上是正确的。 仍然感觉像扭曲的规则。 :P
使用python:
 1/0 
X86机器码:1个字节
从Windows的cmd提示符创build包含字节F4的文件a.com,x86 halt指令:
 F:\>debug -a 100 0BFD:0100 hlt 0BFD:0101 -r cx CX 0000 :1 -n a.com -w Writing 00001 bytes -q F:\>a.com 
NTVDM CPU遇到非法指令
 $ cat > crash.S hlt $ as -o crash.o crash.S $ ld crash.o ld: warning: cannot find entry symbol _start; defaulting to 0000000008048054 $ ./a.out Segmentation fault 
Perl的
 die 
死在testing线1。
死
将LIST的值打印到STDERR,并以当前值$!退出 (错误)。
Commodore 64 BASIC:
 poke 2,2:sys2 
或更短(使用PETSCIIgraphics字符快捷键):
 pO2,2:sY2 
(在MOS / CSG6510上崩溃:$ 02无效操作码)。 实际上它可以在7个字节(3个指令)中完成:
 lda #$02 sta $02 jmp $0002 
如果您在拥有TI-89的电脑商店,可以通过input以下内容来使其崩溃:
 Exec "00000000" 
(这是8个零)
它会产生“非法指令”。 按2nd + Left + Right + ON重置计算。
如果你想有更多的乐趣,请这样做:
 Exec "4E4A4E750000" 
这将启动隐藏硬件testing菜单,包括内存testing,LCDtesting(绘制棋盘等)等等。 不幸的是,状态栏被擦除,calc的操作系统中没有任何东西将其拖回,因此要自行清理,按照上述说明进行重置,或者执行以下操作:
 Exec "307C56E670FF20C020C020C020C020C04E750000" 
Brainf * CK
5个字符
 +[>+] 
这将需要一段时间,但最终程序将耗尽内存和不可避免的崩溃。
因素(或第四)
。
“数据堆栈下溢”
 怎么样的java Z ? 如果没有文件存在,则会使用java.lang.NoClassDefFoundError “崩溃”。 所以我的答案是零字母。 如果那是无效的,那么…… 
 class T{} 
在线程“main”java.lang.NoSuchMethodError:main中将会“崩溃”$ java T Exception
如果你想要一些真正运行的东西,那么如果你愿意滥用一些东西
 class T{static {int i =1/0;}} 
其他
 class T{public static void main(String[]a){main(a);}} 
引用这个答案 :
所有这些答案,没有Befunge? 我敢打赌,这是他们最短的解决scheme:
1不开玩笑。 尝试一下: http : //www.quirkster.com/js/befunge.html
编辑:我想我需要解释这一个。 1操作数将1推到Befunge的内部堆栈上,而其他任何东西都不会在语言规则下循环。
使用所提供的解释器,您最终将会 – 也就是说最终 – 碰到一个点,代表Befunge堆栈的Javascript数组变得太大而无法重新分配浏览器。 如果你有一个简单的Befunge解释器,它有一个更小的和有界的堆栈 – 就像大多数下面的语言一样 – 这个程序会更快地引起更明显的溢出。
在C中,20个字符:
 void main(){main();} 
更新:由Roe推荐,15个字符:
 main(){main();} 
注意:用VC ++ 2008testing。
晚了,但无论如何。 PHP,32个字符。
 $r=function($z){$z($z);};$r($r); 
 给出Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261900 bytes) in ... 
从技术上讲,我也可以在29岁的时候做到这一点
 $r=function($z){$z();};$r(0); 
但是这不像无限recursion那么有趣。 这个,我不认为“未定义函数”错误应该算作脚本语言中的“编译”,否则:
 Z(); 
将是最小的解决scheme。
另外,而不是崩溃,如何(作为一个脚本)超过最大执行时间? 8个字符:
 for(;;); 
 我原来的那个在for循环的第三个expression式中有一个$i++ ,但是因为PHP将所有整数视为有符号的,而不是溢出,它只是负面的。 
在汇编中试试这个:
 push 0 ret 
当然加上其他的垃圾编译成应用程序。
在Windows PowerShell中:
 throw 
Perl只有2个字符。
 &a 
未定义的子程序&main :: a在test.pl第1行调用。
scheme:
 (1) 
填充文本使这个更长。
在QBasic:
 ? 1/0 
(至less我认为它会继续编译,然后以零分的方式崩溃;这已经有一段时间了…)
在C中,33个字符:
 int main(void){return*((int*)0);} 
Golfscript – 1个字符
很多运营商可以做到这一点,例如
 * 
(eval):1:在`initialize'中:未定义的方法`class_id'为nil:NilClass(NoMethodError) 从../golfscript.rb:285:在`call' 从../golfscript.rb:285:在'去' from(eval):1:在`initialize' 从../golfscript.rb:285:在`call' 从../golfscript.rb:285:在'去' 从../golfscript.rb:477
 main = undefined 
在Haskell。
F#3个字符
1/0
是否编译,虽然给出警告。
Lua,3个字符
除以零并不会导致Lua中的问题,但是这里的内容同样简短:
 a() 
得到:
 lua:isort.lua:1:尝试调用全局“a”(一个零值)
堆栈追溯:
     a.lua:1:主要区块
     [C]: ?
F#,11个字符
 box 0 :?> unit 
编译没有警告。 崩溃:System.InvalidCastException:无法强制types为“System.Int32”的对象键入“Microsoft.FSharp.Core.Unit”。
PostScript,1个字符
像GolfScript一样:
 * 
 语法上合法,但是在运行时崩溃,因为令牌*没有被定义(与GolfScript崩溃的原因不同)。 
 int main () { int n = 0; return 1 / n; } 
这取决于线程允许的最大堆栈大小。 但是使用VC9编译时会崩溃:
 int main() { int a[10000000]; return 0; }; 
Perl的
3个字符
 1/0 
生产:
 Illegal division by zero at crash.pl line 1. 
(仍然在寻找将在两个这样做的东西..)