public void Test_Diag() { UnmanagedMemory.IsDiagOn = true; IntPtr p; byte * pb; bool isExceptionThrown; // Overwrite after try { isExceptionThrown = false; p = UnmanagedMemory.AllocHGlobal(10); pb = (byte *)p.ToPointer(); *(pb + 10) = 0xFF; UnmanagedMemory.FreeHGlobal(p.ToPointer()); } catch (ApplicationException) { isExceptionThrown = true; } Assert.IsTrue(isExceptionThrown); // Overwrite befor try { isExceptionThrown = false; p = UnmanagedMemory.AllocHGlobal(10); pb = (byte *)p.ToPointer(); *(pb - 1) = 0xFF; UnmanagedMemory.FreeHGlobal(p.ToPointer()); } catch (ApplicationException) { isExceptionThrown = true; } Assert.IsTrue(isExceptionThrown); // Overwrite befor and after try { isExceptionThrown = false; p = UnmanagedMemory.AllocHGlobal(10); pb = (byte *)p.ToPointer(); *(pb + 10) = 0xFF; *(pb - 8) = 0xFF; UnmanagedMemory.FreeHGlobal(p.ToPointer()); } catch (ApplicationException) { isExceptionThrown = true; } Assert.IsTrue(isExceptionThrown); UnmanagedMemory.IsDiagOn = false; }