Лаба (работа с виртуальной памятью)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dpbid, 16 Apr 2010.

  1. dpbid

    dpbid New Member

    Joined:
    7 Feb 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Задали следующую лаб. работу на с++.
    Разработать программу, которая демонстрирует управление структурами данных типа «очередь», элементы которого занимают 12 кб. Операции, выполняемые над очередью:
    1 проверить, очередь пуста/не пуста;
    2 добавить элемент в хвост очереди;
    3 удалить элемент из головы очереди;
    4 просмотреть голову очереди;
    5 продублировать голову очереди.
    Воспользоваться механизмом управления разделами виртуальной
    памятью.

    Суть такова: есть односвязный список. выделил под него регион памяти
    как правильно выделить на один элемент структуры 12кб памяти ?

    Ниже выдержка из кода программы:

    PHP:
    base_addr VirtualAlloc(NULLREGIONS_LIMIT*region_sizeMEM_RESERVEPAGE_NOACCESS);//base adres vcego rege0na
        
    if (base_addr == NULL )
            
    printf ("Error! VirtualAlloc reserve failed with error code of %ld\n"GetLastError ());

        
    next_region = (Ochered *) base_addr;

        
    VirtualAlloc((LPVOIDnext_regionregion_sizeMEM_COMMITPAGE_READWRITE);    // read/write access

        
    top next_region;

        
    regions++;
        
    next_region += region_size;
    и
    PHP:
    void Add_Item(int och)
    {
        
    LPVOID alloc_result;
        
    Ochered *new_item;

        
    alloc_result VirtualAlloc((LPVOIDnext_regionregion_sizeMEM_COMMITPAGE_READWRITE);    // read/write access
        
    if (alloc_result == NULL )
            
    printf("VirtualAlloc failed\n");
        else
        {
            
    printf ("Allocating another region.\n");

            
    new_item next_region;

            
    regions++;
            
    next_region += region_size;

            
    cout << "Enter data: ";
            
    cin >> new_item->data;

            if(
    och == 0)
            {
                
    top new_item;
                
    top->next NULL;
            }
            else
            {
                
    Ochered *node top;
                while(
    node->next != NULL)
                    
    node node->next;
                
    new_item->next node->next;
                
    node->next new_item;
            }
            
    och_size++;
        }
    }
    Сюда залил теоретический материал по лаб. работе и сам исходник программы, тот что у меня получился http://slil.ru/28969893
     
    #1 dpbid, 16 Apr 2010
    Last edited: 16 Apr 2010