2007年10月21日

String^ からポインタへ

今回は珍しく C++/CLI のお話。なお、C# と混ざると型名がややこしくなるので、今回はマネージドの型については CLR の汎用型名で統一します。

今ふと思い立ってとある C 言語のライブラリを C++/CLI でラップしようと試みているところなのですが、そこでふと気になったのが多分 C++/CLI 使う人たちが一度は立ち止まる問題である、String^ から wchar_t* への変換のこと。

一般的には、ToCharArray の先頭要素のアドレスを pin_ptr<wchar_t> で受けたり、Marshal::StringToHGlobalUni でポインタにしたりする、と言う風な解説がなされますが、これらはメモリのコピーが発生するためどうしてもパフォーマンスに影響が出てきます。後者なんか FreeHGlobal の呼び出し責任も出てきますし。

続きを読む


posted by Hongliang at 14:43| Comment(6) | TrackBack(0) | C++/CLI | このブログの読者になる | 更新情報をチェックする

ここ(hongliang.seesaa.net)で公開しているものについて、利用は自由に行って頂いて構いません。改変、再頒布もお好きになさって下さい。利用に対しこちらが何かを要求することはありません。

ただし、公開するものを使用、または参考したことによって何らかの損害等が生じた場合でも、私はいかなる責任も負いません。

あ、こんなのに使ったってコメントを頂ければ嬉しいです。