c++到c#封送处理
本文关键字:处理 c++ | 更新日期: 2023-09-27 18:04:01
我有以下一段c++代码,需要C sharp。
int* pData = new int[128];
for(int i = 0; i < 128; i++)
{ pData[i] = i*2 ;}
This pData int*稍后作为void*
传递给函数现在我需要把所有这些放在c#中。我所做的如下:
Int32[] tempData = new Int32[128];
for(int i = 0; i < 128; i++)
{ tempData[i] = i*2 ;}
int size = Marshal.SizeOf(tempData[0]) * tempData.Length;
IntPtr ptrData = Marshal.AllocHGlobal(size);
Marshal.Copy(tempData, 0, ptrData, tempData.Length);
之后,我将ptrData传递给c#函数。但是我得到运行时错误:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
int size = sizeof(int) * tempData.Length;
IntPtr ptrData = Marshal.AllocHGlobal(size);
Marshal.Copy(tempData, 0, ptrData, size);