41

これはちょっとした楽しみです。コンパイルはするが何もせず、実行するとすぐにクラッシュする最短のプログラムを考案できますか? したがって、「クラッシュ」とは、プログラムがエラー状態 (コア ダンプなど) で停止することを意味します。

gcc コンパイラを使用して C よりも速く (7 文字) クラッシュする言語はありますか? [この答えは、誰かが見つけられるように残しておきます。]

(コンパイラ フラグを使用することは許容されるはずです。そうしないと、最近では 7 が機能しなくなります。コンパイラ チェックははるかに優れたものになりました。)

【結果の評価】 複数の言語で複数の正解があるため、1 つにマークすることはできません。ある回答を別の回答で失格にするのは公平ではありません。最良の回答を選ぶために投票を使用してください。

4

35 に答える 35

127

Bah - C を 5 文字でクラッシュさせることができます:

main;

intこれは、 「main」という暗黙の変数を宣言します。これはグローバルなので、変数の初期値は0です。名前が装飾されていないのはCです-そのため、リンカーはそれが関数ではなくvarであることを認識しません。

GCC から警告が表示されましたが、それだけです。

$ gcc crash.c 
crash.c:1: warning: data definition has no type or storage class
$ ./a.exe
Segmentation fault (core dumped)
$
于 2009-11-20T14:19:31.607 に答える
66

文字でクラッシュ0:

$ > golf.c
$ gcc -Wl,--defsym=main=0 golf.c
$ ./a.out
Segmentation fault
于 2009-11-20T16:06:02.907 に答える
49

これは数えられるのかしら…

a

これは JavaScript です。これにより、「オブジェクトが見つかりません」という実行時エラーが発生します。JavaScript は動的言語であるため、構文的にはこれは実際には正しいです。それでもルールをひねるように感じます。:P

于 2009-11-20T13:46:50.240 に答える
47

pythonを使用:

1/0
于 2009-11-20T13:40:41.327 に答える
33

X86 マシンコード: 1 バイト

Windows の cmd プロンプトから、バイト F4、x86 停止命令を含むファイル a.com を作成します。

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 が不正な命令に遭遇しました

于 2009-11-20T21:22:29.310 に答える
24
$ 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
于 2009-11-20T13:39:41.710 に答える
23

パール

die
テストライン1で死亡。

死ぬ

LIST の値を STDERR に出力し、$! の現在の値で終了します。(エラー番号)。

于 2009-11-20T15:56:25.990 に答える
11

TI-89を使用しているコンピュータストアにいる場合は、次のように入力してクラッシュさせることができます。

Exec "00000000"

(これは8つのゼロです)

「違法な指示」が発生します。2nd + Left + Right + ONを押して、計算をリセットします。

もっと楽しみたい場合は、次のようにします。

Exec "4E4A4E750000"

これにより、メモリテスト、LCDテスト(チェッカーボードなどを描画)などの非表示のハードウェアテストメニューが起動します。残念ながら、ステータスバーは消去され、calcのOSには何も戻されないため、自分でクリーンアップするには、上記の手順に従ってリセットするか、次の手順を実行します。

Exec "307C56E670FF20C020C020C020C020C04E750000"
于 2009-11-22T01:25:25.863 に答える
11

コモドール64ベーシック:

poke 2,2:sys2

またはそれより短い (PETSCII グラフィック文字ショートカットを使用):

pO2,2:sY2

(クラッシュ: MOS/CSG6510 の $02 無効なオペコード)。実際には、7 バイト (3 命令) で実行できます。

lda #$02
sta $02
jmp $0002
于 2009-11-22T00:33:14.597 に答える
10

ブレインファック

5文字

+[>+]

しばらく時間がかかりますが、最終的にはプログラムがメモリ不足になり、必然的にクラッシュします。

于 2009-11-20T18:09:30.037 に答える
8

ファクター (またはフォース)

.

「データスタックのアンダーフロー」

于 2009-11-23T17:52:00.817 に答える
7

この答えを引用するには:

これらすべての答えと Befunge はありませんか? 私はそれがそれらすべての最短の解決策であるとかなりの金額を賭けます:

1

冗談じゃない。自分で試してみてください: http://www.quirkster.com/js/befunge.html

編集:これについて説明する必要があると思います。1 オペランドは 1 を Befunge の内部スタックにプッシュし、他に何もないため、言語の規則の下でループに入れます。

提供されたインタープリターを使用すると、Befunge スタックを表す Javascript 配列が大きくなりすぎてブラウザーが再割り当てできないポイントに到達します。以下のほとんどの言語の場合のように、スタックが小さく境界のある単純な Befunge インタープリターを使用している場合、このプログラムはより顕著なオーバーフローをより速く引き起こします。

于 2009-11-21T05:55:02.933 に答える
7

どうjava Zですか?ファイルが存在しない場合は、java.lang.NoClassDefFoundError. だから私の答えはゼロ文字です。それが有効でない場合は...

class T{}

スレッド「メイン」での $ java T Exception で「クラッシュ」します java.lang.NoSuchMethodError: main

実際に実行するものが必要な場合は、少し乱用しても構わないと思っている場合

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

そうしないと

class T{public static void main(String[]a){main(a);}}
于 2009-11-20T13:40:36.397 に答える
6

Cでは、20文字:

void main(){main();}

更新:roeによる提案、15文字:

main(){main();}

注:VC++2008でテスト済み。

于 2009-11-20T13:34:39.687 に答える
5

遅いけどどうでもいい。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);

しかし、それは無限再帰ほど楽しいものではありません。それと、「未定義の関数」エラーがスクリプト言語で「コンパイル」と見なされるべきではないと思います。

Z();

最小の解決策になります。

また、クラッシュする代わりに、(スクリプトとして) 最大実行時間を超えるのはどうですか? 8 文字:

for(;;);

for ループの 3 番目の式にa が含まれていた私の元$i++の解釈ですが、PHP はすべての整数を符号付きとして扱うため、オーバーフローするのではなく、単に負になります。

于 2009-11-24T18:28:58.940 に答える
4

アセンブリでこれを試してください:

push 0
ret

もちろん、他のすべてのガベージを追加して、アプリケーションにコンパイルします。

于 2009-11-20T13:34:10.793 に答える
4

図式:

(1)

これを長くするためのフィラーテキスト。

于 2009-11-20T18:32:18.623 に答える
4

Windows PowerShell で:

throw
于 2009-11-20T13:40:56.323 に答える
4

わずか 2 文字の Perl。

&a
未定義のサブルーチン &main::a が test.pl 行 1 で呼び出されました。
于 2009-11-22T05:15:41.390 に答える
3

QBasicの場合:

? 1/0

(少なくとも、コンパイルしてからゼロ除算でクラッシュすると思います。かなり時間が経っています...)

于 2009-11-20T13:38:11.473 に答える
3

Golfscript-1文字

多くのオペレーターがそれを行うことができます、例えば

*
(eval):1:in `initialize':未定義のメソッド` class_id' for nil:NilClass(NoMethodError)
from ../golfscript.rb:285:in `call '
from ../golfscript.rb:285:in `go '
from(eval):1:in `initialize'
from ../golfscript.rb:285:in `call '
from ../golfscript.rb:285:in `go '
../golfscript.rb:477から
于 2009-11-24T23:32:33.027 に答える
3
main = undefined

ハスケルで。

于 2009-11-24T23:35:22.680 に答える
3

C では、33 文字:

int main(void){return*((int*)0);}
于 2009-11-20T13:33:23.610 に答える
2

ルア、3文字

ゼロ除算はLuaで問題を引き起こしませんが、ここでは同じくらい短いものです。

a()

与える:

lua:isort.lua:1:グローバル'a'(nil値)を呼び出そうとします
スタックトレースバック:
    a.lua:1:メインチャンク
    [C] :?
于 2009-11-20T21:51:07.617 に答える
2

PostScript、1 文字

GolfScript のように:

*

構文的には正当ですが、トークン*が定義されていないため実行時にクラッシュします (GolfScript がクラッシュする理由とは別の理由)。

于 2009-12-15T05:30:12.367 に答える
2

F# 3 文字

1/0

コンパイルしますが、警告が表示されます。

于 2009-11-20T15:33:39.663 に答える
2

F#、11 文字

box 0 :?> unit

警告なしでコンパイルします。クラッシュ: System.InvalidCastException: タイプ 'System.Int32' のオブジェクトをタイプ 'Microsoft.FSharp.Core.Unit' にキャストできません。

于 2009-11-22T01:39:18.970 に答える
1

C#、37文字

class F{static void Main(){Main();}}

スタックを爆発させます。

于 2009-11-20T19:16:43.947 に答える
1
int main () { int n = 0; return 1 / n; }
于 2009-11-20T13:34:03.820 に答える
1

これは、スレッドに許可されている最大スタックサイズによって異なります。ただし、VC9を使用してコンパイルするとクラッシュします。

int main()
{
    int a[10000000];
    return 0;
};
于 2009-11-20T13:35:02.027 に答える
1

パール

3文字

1/0

プロデュース:

Illegal division by zero at crash.pl line 1.

(まだ2つでそれを行うものを探しています..)

于 2009-11-20T18:28:44.247 に答える
1

Befunge、1 キャラクター

ペース RCIX、スタックをオーバーフローさせる最短プログラムからのいくつかの回答スタック オーバーフローを引き起こす最短のコードは何ですか? も適用されます。最短は befunge プログラムです:

1

PS: Golfscript、短い答えはありません

golfscript http://www.golfscript.com/はこれが苦手なようです。1 文字のスタック アンダーフローまたはスタック オーバーフローが発生すると想定していましたが、クラッシュしないように設計されているようです。うまくいけば、言語をよりよく知っている誰かがより詳細に記入してくれるでしょう.

于 2009-11-23T17:47:17.693 に答える
1

0 バイト

A86 を使用すると、サイズがゼロのソース ファイルを作成できます。

DOS コマンド プロンプトを使用する場合:

> copy con crash.asm
[ctrl-z]
1 file(s) copied
> dir *.asm
11/12/2009  13:59                 0 crash.asm
> a86 crash.asm
A86 macro assembler, V4.05 Copyright 2000 Eric Isaacson
Source:
crash.asm
Object: crash.COM
Symbols: crash.SYM
> dir *.com
11/12/2009  13:59                 0 CRASH.COM
> c.com
于 2009-12-11T14:12:58.990 に答える