Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Лаба (работа с виртуальной памятью) (https://forum.antichat.xyz/showthread.php?t=196784)

dpbid 16.04.2010 21:37

Лаба (работа с виртуальной памятью)
 
Задали следующую лаб. работу на с++.
Разработать программу, которая демонстрирует управление структурами данных типа «очередь», элементы которого занимают 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


Время: 11:59