- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Marshal 中有多种方法可以将 AllocHGlobal
分配的原始缓冲区复制到 C# 数组或从 C# 数组复制。但我的问题是,我有两个缓冲区都是由 AllocHGlobal 分配的,我想简单地将一个缓冲区复制到另一个缓冲区。
var buffer1 = Marshal.AllocHGlobal(size);
var buffer2 = Marshal.AllocHGlobal(size);
nativeOpOn(buffer1);
SomeCopy(buffer1, buffer2, size);
我知道一种可能的解决方案是为 memcpy
P/Invoke 系统 C lib,但随后我必须编写不同的 P/Invoke 来支持 Windows、Linux 和 MacOS,因为它们可能有不同的P/调用东西。
最佳答案
如果您使用的是.Net 4.6或更高版本,则可以使用Buffer.MemoryCopy()
:
unsafe
{
Buffer.MemoryCopy(p1.ToPointer(), p2.ToPointer(), destSizeBytes, sourceBytesToCopy);
}
当然,这是不安全
。
关于c# - 我们如何复制两个均由 Marshal.AllocHGlobal 分配的缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175162/
我正在使用 Marshal.AllocHGlobal c# 方法为 IntPtr 分配内存,然后复制 byte[] 的包含: byte[] clientIpAddr = System.Text.Enc
来自 Marshal.AllocHGlobal 的 MSDN 文档: AllocHGlobal is one of two memory allocation methods in the Marsh
Marshal 中有多种方法可以将 AllocHGlobal 分配的原始缓冲区复制到 C# 数组或从 C# 数组复制。但我的问题是,我有两个缓冲区都是由 AllocHGlobal 分配的,我想简单地将
我有一个第 3 方 C 库,其导出方法之一如下: #define MAX_INDEX 8 int GetStuff(IN char* index[MAX_INDEX], OUT char* buf,
我正在通过 Marshal.AllocHGlobal 在我的应用程序中分配一些非托管内存。然后,我将一组字节复制到该位置,并将生成的内存段转换为 struct,然后通过 Marshal.FreeHGl
我正在连接的遗留数据库使用数据缓冲区将行传递给应用程序。为了在 C# 中处理这个问题,我编写了一个类,它提供了在缓冲区中读取和写入不同类型的方法。每个数据文件使用一个数据缓冲区,但必须为某些操作调整缓
我读过,在 Windows 上,malloc 不同于 CoTaskMemAlloc,后者又不同于 AllocHGlobal。对于 C# 使用者,这可能意味着如果我有一个返回 malloc 指针的 C
我用 C# 编写了一个模块,导出了一些要在 C 中使用的函数。我需要为一些要在 C C# 之间传递的结构分配一些内存。 我在 C 中分配的内容使用 malloc,而在 C# 中我使用 Marshal
只是想了解这是否有意义,以及它的意义在哪里。 Marshal.AllocHGlobal(int cb) 在非托管内存中分配指定数量的字节。 但为什么 Marshal.AllocHGlobal(0) 实
我写了一个辅助方法, internal static IntPtr StructToPtr(object obj) { var ptr = Marshal.AllocHGlobal(Marsh
我不清楚 native 互操作的机制。 假设我执行以下操作: IntPtr nativeArray = Marshal.AllocHGlobal(stride * height); someNativ
首先我要说的是,我在整个论坛和网络上的许多链接中查看并找到了有关使用 fixed{}、Marshal.AllocHGlobal() 和 GCHandle.Alloc() 的描述。但是,我还没有找到关于
我有以下结构: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct WAVEHDR { in
我有一个 .Net 类,它使用 struct 为 Marshal.AllocHGlobal 分配非托管内存,然后使用 Marshal.FreeHGlobal 处理它。 我知道类 Microsoft.W
我是一名优秀的程序员,十分优秀!