Ruby 2.3.0 リファレンスマニュアル > 関数一覧 > STR2CSTR
char * STR2CSTR(VALUE str)
Ruby のオブジェクト str から C の文字列を取り出します。 str が String でない場合は to_str によって変換を試みます。
返り値を free したり直接書き換えたりしてはいけません。
STR2CSTR は、与えられたオブジェクトが文字列でなく to_str メソッ ドを持つ場合、内部で to_str を呼び出して暗黙の型変換を行い、 それが保持する文字列ポインタを返します。 しかし、このAPIでは暗黙の型変換結果となるオブジェクトがどこからも 保持されないため、注意して使用しないと結果が GC される可能性があります。
Ruby 1.7 以降では代わりに StringValuePtr を使用します。こちら は、引数の参照先が暗黙の型変換の結果に置き換わるため変換結果が GC されません。(Ruby 1.7 では、STR2CSTR() は、obsolete です)
StringValue は、引数が to_str による暗黙の型変換を期待する 場合に使用します。