- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用这段代码时遇到了一些问题:
//Creating a new ImageElement Struct
ImageElement oElement = new UM0516.ImageElement();
//Create a pointer and allocate enough room for the struct type
IntPtr pElement = Marshal.AllocHGlobal(Marshal.SizeOf(new UM0516.ImageElement()));
//Copy the contents of the struct into the allocated memory space
Marshal.StructureToPtr(oElement, pElement, true);
//Function that takes a file pointed to by handle, and does some sweet sweet things
//And returns a loaded struct pointed to by pElement
FILES_GetImageElement(handle, el, out pElement);
这是我感到困惑的地方:我将单步执行代码,在调用最后一个函数(它应该更改 pElement 指向的内存中的一些位)之后,我看到 oElement 发生了更改!?我认为 Marshal.StructureToPtr 将数据从托管结构“复制”到内存。那么这两个地点实际上是同一个地方吗?托管结构 oElement 和 pElement 指向的分配内存?
最佳答案
本文在 detail 中对此进行了解释:
Formatted blittable classes have fixed layout (formatted) and common data representation in both managed and unmanaged memory. When these types require marshaling, a pointer to the object in the heap is passed to the callee directly. The callee can change the contents of the memory location being referenced by the pointer.
关于memory - 有人可以解释 Marshal.StructureToPtr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735959/
我在使用这段代码时遇到了一些问题: //Creating a new ImageElement Struct ImageElement oElement = new UM0516.ImageEleme
有没有一种方法可以将结构(可能存储在 TypedReference 中)编码到非托管内存而无需实际装箱?结构的类型在运行时未知,因此我不能使用 StructureToPtr (.NET 4.5.1)
我正在开发一个应用程序,它通过 C++/CLR 包装器涉及 native C++ 到 C# 的互操作。 我在执行以下操作时遇到问题,这会导致内存泄漏: MyObject data = (MyObjec
我在我的应用程序中使用了第三方工具。在某些系统上,我收到 System.AccessViolation 错误。虽然,通过代码我无法重现该问题。但在生产环境中它有时会重现。 我对下面的代码有疑问 pub
如果我用 StructureToPtr 编码这个结构,然后用 PtrToStructure 再次解码它,我的第一个节点有 y = {1,2} 而我的第二个节点有 y = {1,0}。 我不知道为什么,
我有结构: type OneDevice = { mutable id : System.UInt16 mutable typeDev
我正在开发一个项目,其中唯一需要与之通信的库是一个 .dll 文件,而我拥有的资源是一个带有源代码的 C# 工作项目;我正在使用 JNA 访问 native 代码,目前在调用该方法时遇到无效内存访问;
我正在使用自定义调试引擎,当我将我的结构编码到 IntPtr 时,Visual Studio 崩溃(被调试的不是调试器)。 我的结构只不过是: public struct DocumentContex
我将从一些历史开始:我目前面临的问题是在没有对代码进行任何更改的情况下突然出现的。然后在3天后以同样的方式消失。现在它一周后又回来了,不想离开=)。 我有适用于打印机的代码 - 设置打印机首选项以指定
我有 C# 类: namespace Models { [StructLayout(LayoutKind.Explicit, Size = 120, CharSet = CharSet.Uni
我在我的代码中使用用 C++ 编写的 API(用 C# 编写)。API 需要一个参数作为指向结构的指针。该结构由“Int”和 Char 数组组成:例如 unsafe public struct To
这是我的代码: internal void Show() { if (Parent == null) throw new NullReferenceException();
我是一名优秀的程序员,十分优秀!