// Метод формирование нового списка из блоков длины не менее 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); }