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);
}
}
上記のコードに何か問題があるように見えますか?