Marshalling dynamic size array into struct
c#, marshalling, pinvoke, struct
Solution
Assuming that you want a struct containing a pointer to the array.
Declare the pointer to the array as `IntPtr` and marshal the array contents manually with `Marshal.AllocHGlobal`, `Marshal.Copy` etc.
Assuming that you want a variable sized struct rather than a struct containing a pointer to the array.
You cannot marshal a variable sized struct using p/invoke. You have at least these two options:
- Break the struct into two parameters.
- Marshal the struct manually with `Marshal.AllocHGlobal`, `Marshal.Copy` etc.
Problem
how can i define a struct with a dynamic sized array? is it right? ``` struct MyStruc { public int len; [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] public int buf[]; } ```