Programming languages 高尔夫代码:编译和崩溃的最短程序是什么?

Programming languages 高尔夫代码:编译和崩溃的最短程序是什么?,programming-languages,code-golf,Programming Languages,Code Golf,这是一点乐趣。你能设计出最短的程序吗?它可以编译,但执行时只会立即崩溃?因此,“崩溃”是指程序在出现错误的情况下停止(例如内核转储) 有没有一种语言比使用gcc编译器的C语言崩溃更快(7个字符)?[我把这个答案留给别人去寻找。] (应该允许使用编译器标志。否则7现在就不起作用了,编译器检查变得更好了。) [结果评估]我无法标记单个答案,因为多种语言有多个正确答案。以一个答案取代另一个答案是不公平的。请使用投票选择最佳答案。C,33个字符: int main(void){return*((int*

这是一点乐趣。你能设计出最短的程序吗?它可以编译,但执行时只会立即崩溃?因此,“崩溃”是指程序在出现错误的情况下停止(例如内核转储)

有没有一种语言比使用gcc编译器的C语言崩溃更快(7个字符)?[我把这个答案留给别人去寻找。]

(应该允许使用编译器标志。否则7现在就不起作用了,编译器检查变得更好了。)

[结果评估]我无法标记单个答案,因为多种语言有多个正确答案。以一个答案取代另一个答案是不公平的。请使用投票选择最佳答案。

C,33个字符:

int main(void){return*((int*)0);}
void main(){main();}
main(){main();}
main;
$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
在程序集中尝试以下操作:

push 0
ret
当然,将要编译的所有其他垃圾添加到应用程序中。

在C中,20个字符:

int main(void){return*((int*)0);}
void main(){main();}
main(){main();}
main;
$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
更新:roe建议,15个字符:

int main(void){return*((int*)0);}
void main(){main();}
main(){main();}
main;
$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault

注意:使用VC++2008进行测试。

它取决于线程允许的最大堆栈大小。但在使用VC9编译时,它确实会崩溃:

int main()
{
    int a[10000000];
    return 0;
};
在QBasic中:

? 1/0

(至少我认为它仍然会编译,然后使用除法为零崩溃;这已经有一段时间了……

那么
javaz
呢?如果不存在文件,它将“崩溃”,并出现
java.lang.NoClassDefFoundError
。所以我的答案是零个字母。如果这是无效的,那么

class T{}
会“崩溃”吗 $java T 线程“main”java.lang.NoSuchMethodError中出现异常:main

如果你想要一些真正运行的东西,那么如果你愿意滥用一些东西

class T{static {int i =1/0;}}
否则

使用python:

1/0
在windows powershell中:

throw

我想知道这是否算数

a

这是用JavaScript编写的。这将导致运行时出现“未找到对象”错误。因为JavaScript是一种动态语言,所以从语法上讲,这实际上是正确的。仍然感觉像是在扭曲规则P

呸-我可以用5个字符使C崩溃:

int main(void){return*((int*)0);}
void main(){main();}
main(){main();}
main;
$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
这声明了一个名为“main”的隐式
int
变量。 它是全局变量,因此变量的初始值为
0
。 它是C,名称没有修饰-因此链接器没有意识到它是一个变量而不是一个函数

GCC给了我一个警告——但仅此而已

$ gcc crash.c 
crash.c:1: warning: data definition has no type or storage class
$ ./a.exe
Segmentation fault (core dumped)
$
F#3个字符 1/0

编译,但会发出警告。

Perl 在测试线1死亡。
将LIST的值打印到STDERR,并以当前值$退出!(呃,没有)


使用
0
字符崩溃:

int main(void){return*((int*)0);}
void main(){main();}
main(){main();}
main;
$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
脑筋 5个字符 这需要一段时间,但最终程序将耗尽内存并不可避免地崩溃。

Perl 3个字符 产生:

Illegal division by zero at crash.pl line 1.
(仍在寻找能在两种情况下实现这一目标的产品。

方案:

(1)
填充文本使其更长。

X86机器代码:1字节 从windows中的cmd提示符创建包含字节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遇到非法指令

Lua,3个字符 被零除不会在Lua中引起问题,但这里的内容同样简短:

a()
给予: lua:isort.lua:1:尝试调用全局“a”(一个nil值) 堆栈回溯: a、 lua:1:在主块中 [C] :? 引述:

所有这些答案都没有错?我想要 下一个合理的赌注这是最短的 所有这些问题的解决办法:

1
不是开玩笑。你自己试试吧:

编辑:我想我需要解释一下 一个。1操作数将1推送到 Befunge的内部堆栈和缺少 任何其他的东西都会把它放在一个循环中 根据语言规则

使用提供的解释器,您可以 最终会——我是说 最终——达到了 表示 Befunge堆栈变得太大,无法使用 要重新分配的浏览器。如果你有 一个简单的Befunge解释器,带有 较小且有界的堆栈--与 大多数语言都是如此 下面--此程序将导致更大的错误 明显的溢出速度更快

准将64基本:

poke 2,2:sys2
或更短(使用PETSCII图形字符快捷方式):

(崩溃:$02 MOS/CSG6510上的操作码无效)。实际上,它可以用7个字节(3个指令)完成:


如果您在有TI-89s的计算机商店,您可以通过键入以下命令使其中一个崩溃:

Exec "00000000"
(这是8个零)

它将产生“非法指令”。按第二+左+右+开重置计算

如果您想获得更多乐趣,请执行以下操作:

Exec "4E4A4E750000"
启动隐藏硬件测试菜单,包括内存测试、LCD测试(绘制棋盘等)等等。不幸的是,状态栏会被删除,calc的操作系统中没有任何内容会将其收回,因此,要在自己完成后进行清理,请按照上述说明重置,或者执行以下操作:

Exec "307C56E670FF20C020C020C020C020C04E750000"
F#,11个字符 编译时没有警告。崩溃原因: System.InvalidCastException:无法将类型为“System.Int32”的对象强制转换为类型为“Microsoft.FSharp.Core.Unit”。

Perl,只需2个字符。 未定义的子例程&main::在test.pl第1行调用的a。Factor(或Forth) .
“数据堆栈下溢”很晚了,但无论如何。PHP,32个字符

$r=function($z){$z($z);};$r($r);
给出
致命错误:允许的内存大小为134217728字节,已在…(尝试分配261900字节)

从技术上讲,我也可以在29分钟内完成

$r=function($z){$z();};$r(0);
但这并不像无限递归那么有趣。我认为在脚本语言中,“未定义函数”错误不应算作“编译”,否则:

Z();
这将是最小的解决方案

另外,与其崩溃,不如(作为脚本)超过最大执行时间?8个字符:

for(;;);
我最初的想法是在for循环的第三个表达式中有一个
$i++
,但是因为PHP将所有整数都视为有符号的,而不是溢出,所以它只是变为负数。

Golfscript-1 Char

许多操作员都能做到这一点

*
(eval):1:在'initialize'中:未定义nil:NilClass(NoMethodError)的'class_id'方法 from../golfscript.rb:285:in'call' from../golfscript.rb:285:in'go' 从(e)