[#28446] named capture and /g, /G option — "K.Kosako" <sndgk393@...>

Ruby 1.9に、

30 messages 2006/03/21
[#28449] Re: named capture and /g, /G option — "K.Kosako" <sndgk393@...> 2006/03/21

> Ruby 1.9に、

[#28452] Re: named capture and /g, /G option — Yukihiro Matsumoto <matz@...> 2006/03/21

まつもと ゆきひろです

[#28453] Re: named capture and /g, /G option — "K.Kosako" <sndgk393@...> 2006/03/21

Yukihiro Matsumoto wrote:

[ruby-dev:28432] Re: -MT付きでのコンパイルについて on Win32 VC7

From: "U.Nakamura" <usa@...>
Date: 2006-03-12 04:55:42 UTC
List: ruby-dev #28432
こんにちは、なかむら(う)です。

In message "[ruby-dev:28429] Re: -MT付きでのコンパイルについて on Win32 VC7"
    on Mar.11,2006 00:51:34, <kbk@kt.rim.or.jp> wrote:
| 本体 → libcmt.lib でリンクされた実体を参照
| socket.so → msvcr71.dll 内の実体を参照
| 
| ということだと思うんですが。同じ名前の違うものを参照
| してしまっているのでつじつまが合わなくなっていると。

既に出てますけど、改めて補足すると、

* 普通にrubyを作った場合
    ruby??-msvcr*.dll -> msvcr*.dll内のテーブル
    socket.so    ->      msvcr*.dll内のテーブル(上と共通)

* msvcr*.dllを利用しなかった場合
    ruby??-msvcr*.dll -> libcmt.lib内のテーブル
    socket.so    ->      libcmt.lib内のテーブル(上と物理的に別)

ですね。


| [ruby-list:41895] にある「メモリマネージャの不一致」と
| いうのは分かりませんけど。

malloc()・free()の管理情報のことですかね。
上の「テーブル」を読み替えれば同じことになります。
ruby本体側でmalloc()したメモリを拡張ライブラリ側でfree()する
とか、その逆をしたりする時に困ったことが起きる、と。

実際には、malloc()そのもの、free()そのものは置き換えが発生し
てruby本体側のものが使われるようになってるはずですが、ランタ
イムの中でmalloc()・free()相当の処理が行われている場合にはこ
の問題は回避できません。


それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>


In This Thread