Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
GAME
23 / 23 / 3
Регистрация: 31.10.2009
Сообщений: 199
#1

C++, менеджэр памяти. - C++

23.02.2011, 02:25. Просмотров 638. Ответов 0
Метки нет (Все метки)

Здравствуйте форумчане =)

Есть такое задание:
Написать менеджер памяти. Дано 10Кб памяти(оперативной так сказать), нужно написать класс для работы с ней, т.е. функции выделения памяти, записи, чтения, де фрагментации, дампа памяти.
C++
1
2
3
4
5
6
int AllocMemory(int size);
void FreeMemory(int MemoryHandle);
bool WriteMemory(int MemoryHandle, int Offset, int Size, void *Data);
bool ReadMemory(int MemoryHandle, int Offset, int Size, void *Data);
void DumpMemory(void);
void Defragmentation();
В общем суть такая, функция AllocMemory возвращает описатель выделенной памяти или 0 если не удалось выделить память, но так как при де фрагментации блоки смещаются внутри класса у нас будет ещё один описатель(внутренний), который будет указывать реальное положение блока памяти в массиве.
Хотелось-бы разместить эти указатели в тех-же 10 килобайтах , как участок зарезервированной памяти.
Возникает вопрос делать его фиксированного размера (-если да то какого) или переменного ?
Может быть у кого-то есть какие - нибудь идеи по этому поводу ...
Допустим эти описатели помещать в конец массива а сами блоки записывать с начала.
И как лучше будет с помощью классов реализовать(саму структуру классов, с кодом я сам разберусь)

Пока решил делать в два класс - собственно главный класс

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MemoryManager
{
    BYTE *memory;
    MemoryBlock *BlockList;
    int *MemorySize;
private:
    /* какие-нибудь фун-ии */
public:
    MemoryManager();
    ~MemoryManager();
    int AllocMemory(int size);
    void FreeMemory(int MemoryHandle);
    bool WriteMemory(int MemoryHandle, int Offset, int Size, void *Data);
    bool ReadMemory(int MemoryHandle, int Offset, int Size, void *Data);
    void DumpMemory(void);
};
и класс блока в памяти
C++
1
2
3
4
5
6
7
8
9
10
11
class MemoryBlock
{
    int externalHandle;
    int internalHandle;
    int blockSize;
public:
    MemoryBlock(int);
    ~MemoryBlock();
    void MoveBlock(int newInternalHandle);
    /* всякие фун-ии */
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2011, 02:25     C++, менеджэр памяти.
Посмотрите здесь:

1 Гб не буферизованной памяти или 2 Гб памяти с буферизацией. Как это понимать ? - Компьютерное железо
1 Гб не буферизованной памяти или 2 Гб памяти с буферизацией Как это понимать ? И что будет если я установлю 2 Гб не буферизованной...

Свойства шины памяти и подбор планки памяти - Апгрейд компьютера
Имеется такая конфигурация: Свойства шины памяти Тип шины Dual DDR3 SDRAM Ширина шины 128...

Построить модуль памяти заданной емкости на базе устройств памяти меньшей емкости с последовательным распределением адресов по устройствам - Программируемая логика
Подскажите пожалуйста кто сможет, как сделать вот это задание: Построить модуль памяти заданной емкости на базе устройств памяти меньшей...

Перезагружается компьютер после установки памяти + нет настройки памяти в BIOS - Оперативная память
Добрый день! Помогите пожалуйста разобраться в следующей ситуации, после установки оперативной памяти Kingston DDR3-1600 8192MB...

Выбор памяти для материнской памяти Gigabyte GA-F2A88XN-WIFI - Оперативная память
Всем доброго дня! Есть материнская плата Gigabyte GA-F2A88XN-WIFI в ее спецификациях на официальном сайте в разделе Memory есть...

В поле дампа памяти вывести на экран содержимое данной памяти [bx+di] - Assembler
Имеется функция IDIV word ptr . Но предварительно мы записываем значение в данную область памяти т.е mow ,0005. вопрос,как мне в поле...

Сколько памяти Вам действительно нужно?(полезная статья при выборе памяти) - Оперативная память
Сколько памяти Вам действительно нужно? Компьютер поставляется со стандартным набором памяти, и разработчики программного обеспечения...

На GeFoce GT 230 с 1,5 гига памяти доступно только 255 мегабайт графической памяти. - Видеокарты
У меня GeForce GT230 1,5 гига памяти. Но под виндой доступно только 255 мегабайт графической памяти. С чем это связано?

Непонятный расход памяти (ничего не запущено, кроме антивируса, а расходуется 900 МБ памяти) - Windows 7
Объясните, почему у меня ничего не запущено, кроме антивируса, а расходуется 900 МБ памяти?

Выделить в памяти 1024 ячейки по 8 байт и вывести их адреса(МИНИ менеджер памяти)) - C++
Вот тут появилась такая интересная задача: требуется сделать программу которая управляет 1024 ячейками памяти по 8 байт каждая. т.е. за...

HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти - C#
Добрый вечер. Мне была поставлена такая задача. Написать приложение, которая загружает из списка ссылки с сайта и ищет там определенную...

Распределение памяти для выделения и освобождения блоков памяти внутри запрошенного пула - C (СИ)
В программе малые"дыры" избегают,что нужно сделать что бы малые "дыры" не избегались.... # include <stdio.h> # include <stdlib.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru