null
C および C++での逆参照によって、未定義の結果が生じる場合があることを知りました。これは、すべての奇妙なプログラミング動作と同様に、私にとって非常に興味深いものです (私はかつて、正規の運用環境で「破損した RAM - プログラムが書かれたとおりに実行されない」をデバッグしたと誰かに言われました)。私は主に Java 開発者なので、Java 言語でも同様のことが起こる可能性があるのではないかと考えていました。
JLS はnull
リファレンスの実装方法 ( 3.10.7、4.1、15.8.1 ) について具体的ではないため、よくわかりません。でもUnsafe APIでメモリアドレスを直接操作することで可能になるのではないかと考えていました。残念ながら、これが可能かどうかを判断するには、JVM の内部動作について十分な知識がありません。
可能であれば、悪意のあるプログラムも同様にそうする可能性があり、興味深いセキュリティ上の懸念が生じます。
null
では、単に をスローするのではなく、を逆参照するときに Java が未定義の動作をする可能性はありNullPointerException
ますか?