Я только узнал, что разыменование null
в C и С++ иногда может давать undefined результаты. Это очень интригует ко мне, как и все причудливые программные поведения (однажды я сказал кому-то, что они отлаживают "коррумпированную RAM-программу, не запускается так, как написано" в законной производственной среде). Поскольку я в первую очередь разработчик Java, мне было интересно, возможно ли это, чтобы это произошло и на этом языке?
JLS не зависит от реализации ссылки null
(3.10.7, 4.1, 15.8.1), поэтому я не совсем уверен. Но я думал, что это возможно, напрямую манипулируя адресом памяти с помощью небезопасного API. К сожалению, мне не хватает знаний о внутренней работе JVM, чтобы узнать, возможно ли это или нет.
Если это возможно, тогда и вредоносную программу можно будет сделать так же, что вызовет интерес к безопасности.
Итак: возможно ли, что Java имеет поведение undefined при разыменовании null
, а не просто бросает NullPointerException
?