// Метод формирование нового списка из блоков длины не менее L
        public VirtualRAM CreateNewVirtualRAM(int Lenght)
        {
            VirtualRAM ans = new VirtualRAM();

            for (int i = 0; i < MemoryList.Count; i++)
            {
                if (MemoryList[i].Len >= Lenght)
                {
                    ans.TakeMemory(MemoryList[i].Ptr, MemoryList[i].Len);
                }
            }
            return(ans);
        }
        static void Main(string[] args)
        {
            int        pointer = 1;
            int        pointer_ = 2;
            int        length = 3;
            int        length = 3;
            int        index = 0;
            VirtualRAM ram = new VirtualRAM("console");
            VirtualRAM sad = new VirtualRAM("console"), merg;

            merg = VirtualRAM.Merge(sad, ram);
            merg.PrintOut();
            merg.IsCreateble(pointer, length, pointer_, Lenght_);
            merg.Modification(index, pointer, length);
            merg.TakeMemory(pointer, length);
        }
        // Метод слияния двух списков (например,  второй список может формироваться при завершении работы некоторой программы
        public static VirtualRAM Merge(VirtualRAM a, VirtualRAM b)
        {
            VirtualRAM ans = new VirtualRAM();

            for (int i = 0; i < a.MemoryList.Count; i++)
            {
                ans.TakeMemory(a.MemoryList[i].Ptr, a.MemoryList[i].Len);
            }
            for (int i = 0; i < b.MemoryList.Count; i++) // выкидывает Exception при возможных ошибках(пересечение)
            {
                if (!ans.TakeMemory(b.MemoryList[i].Ptr, b.MemoryList[i].Len))
                {
                    throw new Exception();
                }
            }
            return(ans);
        }