[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
------------------------------------------------------------