Что самый короткий код должен вызвать переполнение стека? [закрытый]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

160
задан 19 revs, 9 users 62% 23 May 2017 в 12:26
поделиться

131 ответ

C# с 27 непробельными символами - включает вызов.

Action a = null;
a = () => a();
a();
0
ответ дан Amy B 23 November 2019 в 21:27
поделиться

PHP - рекурсия только для забавы. Я предполагаю нуждаться в интерпретаторе PHP, берет его без шансов на выигрыш, но эй - это сделает катастрофический отказ.

function a() { a(); } a();
0
ответ дан 2 revs 23 November 2019 в 21:27
поделиться

пакет MS-DOS:

copy CON so.bat
so.bat
^Z
so.bat
0
ответ дан davidnicol 23 November 2019 в 21:27
поделиться

Perl в 10 символах

sub x{&x}x

В конечном счете израсходовал всю доступную память.

0
ответ дан davidnicol 23 November 2019 в 21:27
поделиться
//lang = C++... it's joke, of course
//Pay attention how 
void StackOverflow(){printf("StackOverflow!");}
int main()
{
    StackOverflow(); //called StackOverflow, right?
}
0
ответ дан 2 revs 23 November 2019 в 21:27
поделиться

На шпорах ячейки нет никаких переполнений стека, таким образом, нет никакой потребности в рекурсии, мы можем просто вытереть указатель вершины стека.

asm ("andi 1$, 1$, 0");

0
ответ дан whythehellcantivote 23 November 2019 в 21:27
поделиться

рекурсия является старой шляпой. вот взаимная рекурсия. начнитесь путем вызывания любой функции.

a()
{
    b();
}
b()
{
    a();
}

пз: но Вы просили самый короткий путь.. не самый творческий путь!

0
ответ дан Kinjal Dixit 23 November 2019 в 21:27
поделиться

Пять байтов в 16-разрядном asm, который вызовет переполнение стека.

push cs
push $-1
ret
0
ответ дан Jonas Gulle 23 November 2019 в 21:27
поделиться

VB.Net

Function StackOverflow() As Integer
    Return StackOverflow()
End Function
0
ответ дан Kibbee 23 November 2019 в 21:27
поделиться

Не очень короткий, но эффективный! (JavaScript)

setTimeout(1, function() {while(1) a=1;});
0
ответ дан Thevs 23 November 2019 в 21:27
поделиться

почему не

mov sp,0

(стек углубляется)

0
ответ дан 2 revs, 2 users 89% 23 November 2019 в 21:27
поделиться

В C#, это создало бы stackoverflow...

static void Main()
{
    Main();
}
0
ответ дан 2 revs, 2 users 67% 23 November 2019 в 21:27
поделиться

удар: Только один процесс

\#!/bin/bash
of() { of; }
of
0
ответ дан 2 revs, 2 users 67%unknown (yahoo) 23 November 2019 в 21:27
поделиться

Оптимизация последнего вызова может саботироваться не вызов хвоста. В языке Common LISP:

(defun f () (1+ (f)))
0
ответ дан Svante 23 November 2019 в 21:27
поделиться

Пролог

Эта программа разрушает и SWI-пролог и Пролог Sicstus при консалтинге.

p :- p, q.
:- p.
0
ответ дан Kaarel 23 November 2019 в 21:27
поделиться

В x86 блоке поместите деление 0 инструкциями в местоположении в память об обработчике прерываний для деления 0!

0
ответ дан Dennis Ferron 23 November 2019 в 21:27
поделиться

Actionscript 3: Все сделанные с массивами...

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

, Возможно, не самое маленькое, но я думаю, что это является милым. Особенно метод нажатия, возвращая новую длину массива!

0
ответ дан 2 revs 23 November 2019 в 21:27
поделиться

В файл PostScript , названный so.ps, вызовет execstackoverflow

%!PS
/increase {1 add} def
1 increase
(so.ps) run
0
ответ дан Mark Nold 23 November 2019 в 21:27
поделиться

Ruby, хотя не настолько короткий:

class Overflow
    def initialize
        Overflow.new
    end
end

Overflow.new
0
ответ дан RFelix 23 November 2019 в 21:27
поделиться

Я думаю, что это обманывает, я никогда не играл прежде;), но здесь идет

8 086 ассемблеров:

org Int3VectorAdrress; это обманывает?

интервал 3

1 байт - или 5 символов, которые генерируют код, что говорит Вас?

0
ответ дан Despatcher 23 November 2019 в 21:27
поделиться

Для Забавы я должен был искать блок Motorolla HC11:

              org           $100
Loop    nop
          jsr            Loop
0
ответ дан PersistenceOfVision 23 November 2019 в 21:27
поделиться

В значительной степени любая оболочка:

sh $0

(5 символов, только работы, если выполнено из файла)

0
ответ дан 23 November 2019 в 21:27
поделиться

Мета проблема в D:

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

переполнение стека времени компиляции

0
ответ дан 23 November 2019 в 21:27
поделиться
_asm t: call t;
0
ответ дан 23 November 2019 в 21:27
поделиться

OCaml

let rec f l = f l@l;;

Этот немного отличается. В стеке только один фрейм стека (так как он хвостовой рекурсивный), но его ввод продолжает расти, пока не переполнит стек. Просто вызовите f с непустым списком, например (в подсказке интерпретатора):

# f [0];;
Stack overflow during evaluation (looping recursion?).
0
ответ дан 23 November 2019 в 21:27
поделиться

Даже если у него на самом деле нет стека ...

brainf * ck 5 char

+[>+]
0
ответ дан 23 November 2019 в 21:27
поделиться

Ассемблерный язык Z80...

.org 1000
loop: call loop

это генерирует 3 байта кода по адресу 1000....

1000 CD 00 10

.
0
ответ дан 23 November 2019 в 21:27
поделиться

ruby (снова):

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

Уже есть много решений ruby, но я подумал, что я бы бросил regexp для хорошей меры.

0
ответ дан 23 November 2019 в 21:27
поделиться

Можно задать Z-индекс в IE только для родительского div, в котором вы находитесь. Div выше вверх всегда тонируется поверх вашего нижнего Div. Я решил проблему, поставив Modualwindow Div прямо после тэга. Если это первое погружение, оно всегда сверху.

Хенрик

-121--4482420-

Лично я бы просто использовал substr (), потому что это, вероятно, самый легкий способ сделать это в любом случае.

Но вот функция, которая принимает дату, из которой можно указать формат. Он возвращает ассоциативный массив, так что вы можете сделать, например (непроверенный):

$parsed_date = date_parse_from_format('Ymd', $date);
$timestamp = mktime($parsed_date['year'], $parsed_date['month'], $parsed_date['day']);

http://uk.php.net/manual/en/function.date-parse-from-format.php

Хотя я должен сказать, я не нахожу, что легче или эффективнее, чем просто:

mktime(substr($date, 0, 4), substr($date, 4, 2), substr($date, 6, 2));
-121--2881505-
main(){
   main();
}

Простой и хороший C. Чувствует себя довольно интуитивно для меня.

0
ответ дан 23 November 2019 в 21:27
поделиться

Другой пакетный файл Windows:

:a
@call :a
0
ответ дан 23 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: