簡體   English   中英

Marshal.StructureToPtr使Visual Studio崩潰

[英]Marshal.StructureToPtr crashes Visual Studio

我正在使用自定義調試引擎,當我將結構編組到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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM