it-swarm-ko.tech

스택 오버플로를 일으키는 가장 짧은 코드는 무엇입니까?

스택 오버플로의 공개 출시를 기념하기 위해 스택 오버플로를 유발하는 가장 짧은 코드는 무엇입니까? 모든 언어를 환영합니다.

ETA :이 질문에 대해 분명히하기 위해, 가끔씩 Scheme 사용자 인 경우 : tail-call "recursion"은 실제로 반복이며, 괜찮은 컴파일러에 의해 비교적 간단한 반복 솔루션으로 변환 될 수있는 솔루션은 그렇지 않습니다 계산됩니다. :-피

ETA2 : 저는 이제 "최고의 답변"을 선택했습니다. 이론적 근거는 이 게시물 을 참조하십시오. 기여한 모든 사람에게 감사합니다! :-)

160
Chris Jester-Young

액션 스크립트 3 : 모든 배열이 완료되었습니다 ...

var i=[];
i[i.Push(i)]=i;
trace(i);

어쩌면 가장 작지는 않지만 귀엽습니다. 특히 새로운 배열 길이를 반환하는 Push 메소드!

0
defmeta

오캄

let rec f l = f [email protected];;

이것은 조금 다릅니다. 스택에는 스택 프레임이 하나만 있지만 (꼬리 재귀이므로) 스택에 넘칠 때까지 입력이 계속 증가합니다. 다음과 같이 비어 있지 않은 목록으로 f을 호출하십시오 (통역사 프롬프트에서).

# f [0];;
Stack overflow during evaluation (looping recursion?).
0
Graphics Noob
int main(void) { return main(); }
0
Daniel Băluţă
main(){
   main();
}

평범하고 멋진 C. 나에게 매우 직관적 인 느낌.

0
N 1.1

VB.Net

Function StackOverflow() As Integer
    Return StackOverflow()
End Function
0
Kibbee

아주 짧지는 않지만 효과적입니다! (자바 스크립트)

setTimeout(1, function() {while(1) a=1;});
0
Thevs

자바 스크립트 (17 바이트)

eval(t="eval(t)")

VB 스크립트 (25 바이트)

t="Execute(t)":Execute(t)
0
st0le

재미를 위해 Motorola HC11 Assembly를 찾아야했습니다.

              org           $100
Loop    nop
          jsr            Loop
0

다른 Windows Batch 파일 :

:a
@call :a
0
Carlos Gutiérrez

D의 메타 문제 :

class C(int i) { C!(i+1) c; }
C!(1) c;

컴파일 타임 스택 오버플로

0
BCS

하스켈 :

main = print $ x 1 where x y = x y + 1
0
jkramer

루비 (다시) :

def a(x);x.gsub(/./){a$0};end;a"x"

Ruby 솔루션이 이미 많이 있지만 좋은 측정을 위해 정규 표현식을 던질 것이라고 생각했습니다.

0
finnw
_asm t: call t;
0
Tolgahan Albayrak

루비는 그렇게 짧지는 않지만 :

class Overflow
    def initialize
        Overflow.new
    end
end

Overflow.new
0
RFelix

실제로 스택이 없지만 ...

brainf * ck 5 문자

+[>+]
0
Graphics Noob

파이썬 :

import sys  
sys.setrecursionlimit(sys.maxint)  
def so():  
    so()  
so()
0
Artur Gaspar

나는 내가 전에 한 번도 한 적이없는 속임수라고 생각하지만 여기에 간다.

8086 어셈블러 :

org Int3VectorAdrress; 부정 행위입니까?

int 3

1 바이트-또는 코드를 생성하는 5 문자, 어떻게 말합니까?

0
Despatcher

X86 어셈블리에서 0으로 나누기 위해 인터럽트 처리기의 메모리 위치에 0으로 나누기 명령을 배치하십시오!

0
Dennis Ferron

왜 안돼

mov sp,0

(스택이 커짐)

0
mike511

테일 콜이 아니라 테일 콜 최적화를 방해 할 수 있습니다. 일반적인 LISP에서 :

(데펀 f () (1+ (f)))
0
Svante

Z80 어셈블리 언어 ...

.org 1000
loop: call loop

위치 1000에서 3 바이트의 코드를 생성합니다 ....

1000 년 CD 00 10

0
Tim Ring

포트란, 13 ~ 20 자

real n(0)
n(1)=0
end

또는

call main
end

두 번째 경우는 컴파일러에 따라 다릅니다. for GNU 포트란, -fno-underscoring.

(둘 다 필요한 개행을 포함합니다)

0
F'x

디아 로그 APL

fib←{
    ⍵∊0 1:⍵
    +/∇¨⍵-1 2
}
0
wash

프롤로그

이 프로그램은 상담 할 때 SWI-Prolog와 Sicstus Prolog를 모두 충돌시킵니다.

p :- p, q.
:- p.
0
Kaarel

C #에서 이것은 stackoverflow를 생성합니다 ...

static void Main()
{
    Main();
}
0
user11039

So.ps라는 PostScript 파일에서 execstackoverflow가 발생합니다.

%!PS
/increase {1 add} def
1 increase
(so.ps) run
0
Mark Nold