I need to copy native (i.e. unmanaged) data (byte*) to managed byte array with C++/CLI (array).
I tried Marshal::Copy (data is pointed to by const void* data and is
As you've noted, Marshal::Copy
(and .NET in general), is not const
-safe.
However, the usual C and C++ functions are. You can write either:
array^ data_array =gcnew array(dataSize);
pin_ptr data_array_start = &data_array[0];
memcpy(data_array_start, data, dataSize);
or to avoid pinning:
array^ data_array =gcnew array(dataSize);
for( int i = 0; i < data_array->Length; ++i )
data_array[i] = data[i];