マネージバイト配列をC++/CLIラッパーのstd :: stringに変換しようとしています。しかし、私は後でヒープのいくつかの破損したメモリを見ている。私は変換権を行っているかどうかを確認したいだけでした。以下は、私の方法は、CLIで次のとおりです。管理されたバイト配列をアンマネージ文字列に変換する
string ByteArrayToStr(array<Byte>^ byteArray)
{
int size = byteArray.Length;
IntPtr pnt = Marshal::AllocHGlobal(size + 1);
char* chararray = (char*)pnt.ToPointer();
try
{
Marshal::Copy(byteArray, 0, pnt, size);
*(chararray + size) = 0;
return string(chararray);
}
finally
{
Marshal::FreeHGlobal(pnt);
}
}
は何も上記のコードで間違っているように見えるのか?
。 'try'ブロックの2行目を' chararray [site] 'を使うように変更しましたが、それはもっと読みやすく、コードが何をするのかは変わりません。 – svick
通常、C++/CLIコードからヒープを破損させるために多くの助けを必要としません。これはそうではありません。 –
ありがとうございます。私のコードは他にもあるはずです。私は見てみましょう。ありがとう、Raj。 – user392005