【发布时间】:2011-04-13 23:16:29
【问题描述】:
我正在将一些代码从 C++ 转换为 C#,我需要了解如何处理这些行:
PDWORD rgb32_data = (PDWORD) malloc(640*480*4);
据我了解,PDWORD 类型代表一个无符号整数(32 位)。实现类似结构的良好 C# 策略是什么?
编辑:我发现我需要使用 IntPtr 来替换 PDWORD,但 IntPtr 将保存单个值,而不是数组中的多个值。有什么 C# 建议吗?
EDIT2:Uint[] 对我不起作用 - 不幸的是,我可以编译程序及其所有依赖项的唯一方法是当我输入 IntPtr 作为参数时,而不是 IntPtr[]。
谢谢。
编辑 - 我已经标记了解决方案,此外我还需要执行以下操作:
因为我需要一个 IntPtr 演员表,所以我添加了这段代码
IntPtr rgb32_ptr;
GCHandle handle = GCHandle.Alloc(rgb32_data, GCHandleType.Pinned);
try
{
rgb32_ptr = handle.AddrOfPinnedObject();
}
finally
{
if (handle.IsAllocated)
{
handle.Free();
}
}
获得相同的 IntPtr。
【问题讨论】: