Я пытаюсь преобразовать управляемый байтовый массив в std :: string в моей оболочке C ++ / CLI;тем не менее, позже я вижу испорченную память в куче.Просто хотел проверить, правильно ли я делаю конвертацию.Ниже мой метод 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);
}
}
Что-то кажется неправильным в приведенном выше коде?