Marshal.Copy 没有复制价值

Marshal.Copy not copying over value

我对 C# 不是很熟悉,我正在尝试使用 'Marshal.Copy',但它并没有改变我正在使用的 IntPtr 的值。

IntPtr ptr = InitPointer(width, height);

Marshal.Copy(inputIntArray, 0, ptr, width * height * 4);

其中 InitPointer 定义为:

[DllImport(@"../../../../Debug/KernelApplier.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr InitPointer(int x, int y);

而在我的 kerneApplier.dll 函数中写成:

int * inputBuffer;
int size;
int m_x, m_y;

extern "C" __declspec(dllexport) int* InitPointer(int x, int y) {
    size = x*y * sizeof(cl_int3);
    m_x = x;
    m_y = y;
    inputBuffer = (int*)malloc(size * sizeof(int));
    return inputBuffer;
}

我正在使用我的手表 window 来监控以下值:

我是否使用了 Marshal.copy 不正确,或者将数据从 C++ 传递到 C# 时出现问题

你的代码没问题。 IntPtr 值不会改变,但它是非托管内存的地址,因此预计不会改变。