managed→unmanaged でのデータ管理

managedのbyte[]と、unmanagedのchar*を相互変換する方法

unmanaged→managedの場合

char value[256];
  〜
size_t len = strlen(value);
System::Byte bytes[] = new System::Byte[len];
System::Runtime::InteropServices::Marshal::Copy(value, bytes, 0, len);

結果がmanagedデータなので、開放はGC任せでOK

managed→unmanagedの場合

System::Byte bytes[] = 〜;

int len = bytes->Length;
char* str = new char[len + 1];
System::Runtime::InteropServices::Marshal::Copy(bytes, 0, str, len);
str[len] = '\0';

そして、使い終わったら開放

delete[] str;