у меня есть структура с динамической длиной:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct PktAck
{
public Int32 code;
[MarshalAs(UnmanagedType.LPStr)]
public string text;
}
когда я конвертирую байты [] в структуру по этому коду:
GCHandle handle = GCHandle.Alloc(bytes_array, GCHandleType.Pinned);
result_struct = (PktAck)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(PktAck));
handle.Free();
У меня ошибка, потому что размер структуры меньше размера байта [], а "текст строки" - это указатель на строку ...
как я могу использовать динамические строки?
или я могу использовать только что-то вроде этого:
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1000)]
upd: c struct
struct PktAck
{
int code;
char* text;
}