From: Shigeo Kobayashi Date: 2000-02-04T22:57:53+09:00 Subject: [ruby-dev:9112] Re: xmalloc() in Windows 小林です。 ----- Original Message ----- 送信者 : Katsuyuki Komatsu 件名 : [ruby-dev:9111] Re: xmalloc() in Windows > > >調査結果: > >win32.c の構造上、 C のランタイムライブラリーは > >スタティックにリンクする以外にないようですが? > >どうも、ここが問題のようです。 > >スタティックリンクされた rubymw.dll で割り当てた > >メモリは他の DLLで直接 free() できない(MS-Cの > >バグ?)ようなのです。 > > バグと言っては可哀想かな。 > > まったく別の領域を管理をしている複数のmallocライブラリが同一 > プロセス中に存在していて、どれかのmallocライブラリで取得した > メモリは別のmallocライブラリでfreeできないといっているわけです > からね。 理屈から言えば、確かにその通りです(ちょっとかわいそう?)。 でも、バギーというか何か割り切れないです。だって、同じプロセス 空間のアドレスを free() できないなんて! 単純に GlobalAllocPtr() と GlobalFreePtr() を呼ぶだけならなら OK なのに(あたりまえか)! 最初は、rubymw.dll は MSVCRT.DLL を使用しているものと思っ ていたので発見するのにちょっと手間取りました。 > > でも、こうやってC Runtimeに入っているものを入れていくときりがないか。 > そろそろ、MSVCRT.DLL化かRubyCRT.dllの導入を考えないと。 > ですね。 (^^;; 小林 茂雄 E-Mail: shigeo@tinyforest.gr.jp Home Page: http://www.tinyforest.gr.jp