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