public static void blackbox(hole hole)
        {
            List <memoryitem> temp = memory.OrderBy(a => a.getstratingadd()).ToList();
            memoryitem        last_item;
            int st_add;
            int t_size;

            if (temp.Count > 0)
            {
                last_item = temp.Last();
                t_size    = last_item.size;
                st_add    = last_item.getstratingadd();
                if ((st_add + t_size < hole.starting_add))
                {
                    blackhole before = new blackhole(st_add + t_size, (hole.starting_add - st_add - t_size));
                    memory.Add(before);
                }
            }
        }
        public static void inserthole(hole hole)
        {
            foreach (var item in memory)
            {
                if (item.type == "s")
                {
                    if ((item.starting_add + item.size <= hole.getstratingadd()))
                    {
                        continue;
                    }
                    else if ((item.starting_add <= hole.getstratingadd()) && (item.starting_add + item.size > hole.getstratingadd()))
                    {
                        int starting_add = item.starting_add;
                        int size_temp    = item.size;

                        blackhole before = new blackhole(starting_add, (hole.starting_add - starting_add));
                        blackhole after  = new blackhole(hole.starting_add + hole.size, starting_add + size_temp - hole.starting_add - hole.size);
                        memory.Remove(item);
                        memory.Add(hole);
                        memory.Add(before);
                        memory.Add(after);
                        return;
                    }
                    else if ((item.starting_add <= hole.getstratingadd()) && (item.starting_add + item.size < hole.getstratingadd() + hole.size))
                    {
                    }
                }
                else if (item.type == "p")
                {
                    if ((item.starting_add + item.size <= hole.getstratingadd()))
                    {
                        continue;
                    }
                    else if ((item.starting_add <= hole.getstratingadd()) && (item.starting_add + item.size > hole.getstratingadd()))
                    {
                        break;
                    }
                    else
                    {
                        break;
                    }
                }
                else
                {
                    if ((item.starting_add + item.size <= hole.getstratingadd()))
                    {
                        continue;
                    }
                    else if ((item.starting_add <= hole.getstratingadd()) && (item.starting_add + item.size >= hole.getstratingadd()))
                    {
                        return;
                    }
                    else
                    {
                        return;
                    }
                }
            }

            blackbox(hole);
            memory.Add(hole);
            concatenate(memory);
        }