Форум программистов, компьютерный форум 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. на windows 8 не работает.Нормально устанавливается все отображается,а данные не вводятся и соответственно программа не работает.С windows 8 я никогда не работал увидел ее впервые все мои попытки с... 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
Здравствуйте, меня интересует вопрос - насколько операция создания переменных быстра. есть функция рендеринга, которая выполняется несколько сотен раз в секунду, стоит ли выносить временные переменные за функцию, или это практически не имеет смысла? например вместо void Camera::Render() { int a = ...; int b = ...; ..... }
C++ Кракозябры в консоли - почему? Добрый день. Почитав форум и статью про кодировки вообще я задался парой вопросов. Ладно, мне более менее ясно, почему возникают кракозябры (win1251 -> OEM 866). Но неясно 2 момента: 1) Почему при вызове функции setlocale(LC_ALL, "Russian") работает вывод (и почему вообще это происходит?), но не работает ввод? 2) Почему при SetConsoleCP(1251) и SetConsoleOutputCP(1251) работает ввод и вывод, но... подробнее

Показать сообщение отдельно
taimag
0 / 0 / 0
Регистрация: 19.01.2013
Сообщений: 31
12.08.2013, 03:24     Карта на основе битового поля
Здравствуйте. Реализую собственный алокатор памяти. Мне нужно знать где свободная память, а где нет. Для этого хочу использовать битовые поля. Суть идеи:
Минимально выделяемая память - 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;
И уже буду разбирать на биты ячейку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru