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

Карта на основе битового поля - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Borland C++ error 1309 http://www.cyberforum.ru/cpp-beginners/thread936733.html
Всем привет. Я тут хочу загрузить Borland, но у меня все время выскакивает ошибка 1309. Добавлял файл uninstall.ini куда просят, но потом появляются новые категории где его нет (Temp7 потом Temp8 и...
C++ не работает программа Доброго всем времени суток.Увожаемые форумчане пожалуйста помогите мне разобраться с проблемой.У меня есть консольный вариант программы,он нормально устанавливается и работает на XP. 7, vista. на... http://www.cyberforum.ru/cpp-beginners/thread936727.html
C++ Найти номер минимального по модулю элемента массива, сумму модулей элементов, сжать.
Помогите пожалуйста доделать задачу.Нужно если последний элемент массива был отрицательный и он один отрицательный в этом массиве,чтобы выводило сообщение что сумма не может быть посчитана. Найти...
write C++
Нужно записать данные контейнера в файл: #include<iostream> #include<string> #include<vector> #include<fstream> #include<iterator> #include<algorithm> using namespace std; class Store {
C++ Создание переменных в цикле http://www.cyberforum.ru/cpp-beginners/thread936681.html
Здравствуйте, меня интересует вопрос - насколько операция создания переменных быстра. есть функция рендеринга, которая выполняется несколько сотен раз в секунду, стоит ли выносить временные...
C++ Кракозябры в консоли - почему? Добрый день. Почитав форум и статью про кодировки вообще я задался парой вопросов. Ладно, мне более менее ясно, почему возникают кракозябры (win1251 -> OEM 866). Но неясно 2 момента: 1) Почему при... подробнее

Показать сообщение отдельно
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31

Карта на основе битового поля - C++

12.08.2013, 03:24. Просмотров 326. Ответов 1
Метки (Все метки)

Здравствуйте. Реализую собственный алокатор памяти. Мне нужно знать где свободная память, а где нет. Для этого хочу использовать битовые поля. Суть идеи:
Минимально выделяемая память - 1 бАЙт. = в карте будет отображаться одним бИтом.
Следовательно для отображения 512 бАЙт мне нужно 64 бАЙта для карты. То есть карта занимает в 8 раз меньше места чем сама память. Вся память у меня уже нормально работает, нужна только карта для нее.

Вопрос. Как мне организовать такую карту? Я думал:

C++
1
2
3
4
5
const unsigned int memorySize = 512;
 
struct {
  unsigned m: memorySize;
} map;
Но как мне тогда вывести все 0 и 1 где память занята, а где нет, как мне перемещаться по массиву 0 и 1? И вообще можно ли так сделать?

Добавлено через 31 минуту
В общем пришел к мысли что сделаю так:

C++
1
2
3
4
5
6
const unsigned int memorySize = 512;
const unsigned int chunks = memorySize % sizeof(unsigned char) == 0? memorySize/8 : (memorySize/8)+1;
 
struct {
  unsigned char m[::chunks];
} map;
И уже буду разбирать на биты ячейку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru