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#函数。但是我得到运行时错误:试图读取或写入受保护的内存。这通常表明其他内存已损坏。

c++到c#封送处理

int size = sizeof(int) * tempData.Length;
IntPtr ptrData = Marshal.AllocHGlobal(size);
Marshal.Copy(tempData, 0, ptrData, size);