C# Marshal.FreeHGlobal() 爆异常:堆已损坏
public static byte[] StructToBytes(object structObj)
{
int size = Marshal.SizeOf<object>(structObj);
byte[] bytes = new byte[size];
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.StructureToPtr<object>(structObj, buffer, false);
Marshal.Copy(buffer, bytes, 0, size);
}
catch(OutOfMemoryException ex)
{
MsgNotification.PopErrorInfo("StructToBytes error:" + ex.Message);
}
catch(ArgumentNullException ex)
{
MsgNotification.PopErrorInfo("StructToBytes error:" + ex.Message);
}
finally
{
Marshal.FreeHGlobal(buffer);
}
return bytes;
}
UWP开发使用C#语言 上面的函数跑在Debug模式下非常稳定, 百测不爆
然而切换到Release模式下之后调用即爆..
0x76FE9AAA (ntdll.dll) (hkEncrypt.exe 中)处有未经处理的异常: 0xC0000374: 堆已损坏。 (参数: 0x770258E8)。
同样的函数为什么在Debug模式下没问题到了Release之后就无法正常使用了呢?
这个问题该如何解决呢?