Beispiel #1
0
 public void Free()
 {
     UnmanagedMemory.FreeHGlobal(points);
     points = null;
     UnmanagedMemory.FreeHGlobal(centers);
     centers = null;
 }
Beispiel #2
0
        public unsafe void Test_BigArray()
        {
            Console.WriteLine("Size of element: {0}, sizeof IntPtr: {1}",
                              sizeof(TestStruct), sizeof(IntPtr));
            Int64 arrSize  = 200 * 1000000;
            Int64 byteSize = (Int64)(arrSize * (Int64)sizeof(TestStruct));

            Console.WriteLine("Allocating {0:#,#} bytes...", byteSize);

            TestStruct *pArray = (TestStruct *)UnmanagedMemory.AllocHGlobalEx(byteSize);

            Console.WriteLine("Allocated {0:#,#} bytes", byteSize);

            pArray[0].data[0] = 1;

            Console.WriteLine("Filling with data...");

            for (Int64 i = 0; i < arrSize; ++i)
            {
                pArray[i].data[0] = 10;
            }

            Console.WriteLine("Freeing memory");

            UnmanagedMemory.FreeHGlobal(pArray);
        }
Beispiel #3
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;
        }