- 132 名前:120 mailto:sage [2007/10/11(木) 10:47:31 ]
- >>130
おおう、対応どもです。しかしせっかく真摯に対応していただいて申し訳ないのですが、 私の言いたいことは翻訳の仕方に関してでは無く、書いてある内容そのものなのデス。 多分原文でも言ってることは同じで、翻訳には問題なかったんじゃないでしょか。 というわけで、改めて>>120の疑問を書き直してみたり。 「Dでnewした領域のポインタをC++に渡してやってもいいけど、 途中でGCが走ってその領域がcollectされちゃうと、 いきなりポインタが無効になってC++側が困るよね。 だから以下ほげほげな方法で、GCのcollect対象にならないよう気をつけてね」 ってヲルターは言ってるけど、ポインタが無効になる要因ってcollectだけじゃないよね? www.kmonos.net/alang/d/garbage.html によれば、 > 4. 残ったメモリ領域のデータをコピーして使用領域をまとめる処理 (コピーGCと呼ばれます) が実行される可能性があります。 > ガベージコレクタは、オブジェクトをメモリ上の任意の位置に再配置することがあり... つまりcollect対象でない「生きた」領域を指すポインタだって、GCが走れば再配置によって無効になる可能性がある。 本当は「生かす」だけじゃなく、そのメモリ位置に「固定」する方法が必要なんじゃないか? ……って、アレ? このへん「Cとのインターフェイス」に書いてあることと同じじゃないすか。今気付いた。 今まで問題になったことなかったっけ? 再配置なんて実際には滅多に起こらないとか?
|

|