// Метод слияния двух списков (например, второй список может формироваться при завершении работы некоторой программы 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); }
// Метод формирование нового списка из блоков длины не менее 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); }