gpt4 book ai didi

c# - Marshal.StructureToPtr 使 Visual Studio 崩溃

转载 作者:行者123 更新时间:2023-12-04 00:48:21 33 4
gpt4 key购买 nike

我正在使用自定义调试引擎,当我将我的结构编码到 IntPtr 时,Visual Studio 崩溃(被调试的不是调试器)。

我的结构只不过是:

public struct DocumentContext : IDebugDocumentContext2, IDebugCodeContext2
{
private string _fileName;

//.....Implementation of interfaces
}

我的编码代码如下所示:

        var documentContext = new DocumentContext(_node.FileName);
var size = Marshal.SizeOf(documentContext);
IntPtr ptrDocContext = Marshal.AllocHGlobal(size);
//This is what is crashing
//I don't have a chance to catch anything, it just craps out
//Event log says faulting dll is nt.dll
Marshal.StructureToPtr(documentContext, ptrDocContext, true);

我错过了什么吗?

最佳答案

如果以前从未分配过非托管结构,则不应使用 deleteOld。 deleteOld 仅在您覆盖以前的结构时适用(例如,为了取消分配字符串引用。)这应该有效:

Marshal.StructureToPtr(documentContext, ptrDocContext, false);

关于c# - Marshal.StructureToPtr 使 Visual Studio 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3339979/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com