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, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
C# с 27 непробельными символами - включает вызов.
Action a = null;
a = () => a();
a();
PHP - рекурсия только для забавы. Я предполагаю нуждаться в интерпретаторе PHP, берет его без шансов на выигрыш, но эй - это сделает катастрофический отказ.
function a() { a(); } a();
пакет MS-DOS:
copy CON so.bat
so.bat
^Z
so.bat
Perl в 10 символах
sub x{&x}x
В конечном счете израсходовал всю доступную память.
//lang = C++... it's joke, of course
//Pay attention how
void StackOverflow(){printf("StackOverflow!");}
int main()
{
StackOverflow(); //called StackOverflow, right?
}
На шпорах ячейки нет никаких переполнений стека, таким образом, нет никакой потребности в рекурсии, мы можем просто вытереть указатель вершины стека.
asm ("andi 1$, 1$, 0");
рекурсия является старой шляпой. вот взаимная рекурсия. начнитесь путем вызывания любой функции.
a()
{
b();
}
b()
{
a();
}
пз: но Вы просили самый короткий путь.. не самый творческий путь!
Пять байтов в 16-разрядном asm, который вызовет переполнение стека.
push cs
push $-1
ret
VB.Net
Function StackOverflow() As Integer
Return StackOverflow()
End Function
Не очень короткий, но эффективный! (JavaScript)
setTimeout(1, function() {while(1) a=1;});
почему не
mov sp,0
(стек углубляется)
В C#, это создало бы stackoverflow...
static void Main()
{
Main();
}
удар: Только один процесс
\#!/bin/bash
of() { of; }
of
Оптимизация последнего вызова может саботироваться не вызов хвоста. В языке Common LISP:
(defun f () (1+ (f)))
Пролог
Эта программа разрушает и SWI-пролог и Пролог Sicstus при консалтинге.
p :- p, q.
:- p.
В x86 блоке поместите деление 0 инструкциями в местоположении в память об обработчике прерываний для деления 0!
Actionscript 3: Все сделанные с массивами...
var i=[];
i[i.push(i)]=i;
trace(i);
, Возможно, не самое маленькое, но я думаю, что это является милым. Особенно метод нажатия, возвращая новую длину массива!
В файл PostScript , названный so.ps, вызовет execstackoverflow
%!PS
/increase {1 add} def
1 increase
(so.ps) run
Ruby, хотя не настолько короткий:
class Overflow
def initialize
Overflow.new
end
end
Overflow.new
Я думаю, что это обманывает, я никогда не играл прежде;), но здесь идет
8 086 ассемблеров:
org Int3VectorAdrress; это обманывает?
интервал 3
1 байт - или 5 символов, которые генерируют код, что говорит Вас?
Для Забавы я должен был искать блок Motorolla HC11:
org $100
Loop nop
jsr Loop
В значительной степени любая оболочка:
sh $0
(5 символов, только работы, если выполнено из файла)
Мета проблема в D:
class C(int i) { C!(i+1) c; }
C!(1) c;
переполнение стека времени компиляции
OCaml
let rec f l = f l@l;;
Этот немного отличается. В стеке только один фрейм стека (так как он хвостовой рекурсивный), но его ввод продолжает расти, пока не переполнит стек. Просто вызовите f
с непустым списком, например (в подсказке интерпретатора):
# f [0];;
Stack overflow during evaluation (looping recursion?).
Даже если у него на самом деле нет стека ...
brainf * ck 5 char
+[>+]
Ассемблерный язык Z80...
.org 1000
loop: call loop
это генерирует 3 байта кода по адресу 1000....
1000 CD 00 10
.ruby (снова):
def a(x);x.gsub(/./){a$0};end;a"x"
Уже есть много решений ruby, но я подумал, что я бы бросил regexp для хорошей меры.
Можно задать 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. Чувствует себя довольно интуитивно для меня.