Exemplo n.º 1
0
        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;
        }