2
我正在處理自定義調試引擎,當我將我的結構編組爲IntPtr
Visual Studio崩潰(被調試的不是調試器)。Marshal.StructureToPtr崩潰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);
我缺少的東西?
唉唉奏效。謝謝。我對那面旗幟有些模糊。 – 2010-07-27 00:53:13
文檔中的免責聲明有點微妙。它清楚地指出,如果你傳遞false,你可能會泄漏內存,但只有進一步下去才能澄清,如果結構不包含有效數據,那麼傳遞true將失敗。從本質上講,它試圖釋放結構中字符串引用指向的內存,但指針無效,並且會崩潰。 – 2010-07-27 01:02:15