[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: Javaとポインタ
前橋@久々の会社 です。
木下さん:
>うーん.逆に今時の(Cの)ポインタの方が物理的なアドレスという意味が
>薄れて来てると思ってるので、そっちの方がJavaでの扱いに似てきたと
>いうか...
そう思います。
でも、Cの入門書なんか見ると、いまだにポインタといえば、ポイ
ンタ演算から入っているのが多いような...
ちょっとYahooからCの入門ページを見て廻ったのですが、やっぱり
そんな調子です。
明示的なポインタ演算なんて、少なくとも私の回りでは、もはや滅
多に見掛けないのですが、初心者にいきなり教えなきゃいけないも
のなのかなあ。ぶつぶつ。
# []演算子はポインタ演算のsyntax sugarでしかないので、Cの、
# 「配列とポインタとの微妙な関係」を本当に理解するには、ポイ
# ンタ演算を知らなければいけないような気もしないでもないよう
# な気もするといえばするのですが...
># もう一回言い直せば、(実装は確認していませんが)「Javaの変数はオブ
># ジェクトのIDを保持している」ような認識です.
># そして、Cのポインタも領域を表すIDとして仮想アドレス値を保持す
># る、と.
Java言語入門(続ではない)には、Sunの実行系では、GC(コンパクショ
ン)を容易にするために、Javaのポインタは間接参照ポインタになっ
ている、というようなことが書いてあったはずです。
つまり、オブジェクトの実体を指すポインタのテーブルがどっかに
あって、プログラムの中から見えているオブジェクトへの「参照」
は、このテーブルのインデックス、ということになるのでしょうね。
もちろん、これは Sunの処理系の話で、たとえば確かMSの処理系で
は、複写式のGCを使っていた筈なので、違う形になっていると思い
ます。複写式の一括GCなら、ポインタはアドレスそのものかもしれ
ませんね(知らないですが)。
# JNIでも勉強すると、もうちょっと手掛かりがつかめるかな?
------------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------