Copy unmanaged data into managed array

前端 未结 5 962
广开言路
广开言路 2020-12-28 17:13

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

5条回答
  •  南方客
    南方客 (楼主)
    2020-12-28 17:38

    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];
    

提交回复
热议问题