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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.61
PSIAlt
87 / 87 / 8
Регистрация: 19.06.2012
Сообщений: 245
#1

Задача с собеседования (аллокатор памяти) - C++

02.09.2012, 00:16. Просмотров 8747. Ответов 23
Метки нет (Все метки)

Вопрос звучит так: "Напишите быстрый аллокатор памяти"
Как я его понимаю: можно пожертвовать растратой памяти, всякими наворотами, возможно максимальной величиной обьекта..

Может у кого-то есть какие-то варианты? Мне что-то ничего в голову не приходит кроме как заранее поделить пул на поля с фиксированным размером N и завести битовое поле в котором храним флаги занято/свободно.. Может подкинете пару идей?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2012, 00:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача с собеседования (аллокатор памяти) (C++):

Быстрый аллокатор - C++
Собственно, необходим аллокатор для быстрого выделения памяти под мелкие объекты, совместимый со стандартными контейнерами (std::list и...

Пишем аллокатор - C++
дабы не захламлять и так уже захламленную тему про перегрузку операторов создаю новую тему, собственно по поводу аллокаторов прям...

Аллокатор в chrome - C++
Всем привет, начал изучать исходники хрома, в аллокаторе, метод realloc должен возвращать nullptr если передаваемый аргумент size равен...

Аллокатор памяти общего назначения - C++
Добрый день! В ВУЗе задали написать аллокатор памяти общего назначения на С++, но у меня нет ни единого представления как это можно...

Пародия на стековый аллокатор - C++
здравствуйте, решил тут чуток поиграться... сделать аллокатор чтобы данные в статическом буфере размещал. в итоге долго поиграться не...

Как написать пуловый аллокатор для работы с объектами - C++
Здравствуйте! Подскажите как написать пуловый аллокатор для работы с объектами

23
PSIAlt
87 / 87 / 8
Регистрация: 19.06.2012
Сообщений: 245
02.09.2012, 18:37  [ТС] #16
Заглянул в исходники, там джигурда вобще... Внутернние методы возращают обьекты вроде std::_Base_bitset<16ul> и с ними уже делаются перегруженные операции типа &... И да, ренж чек он тоже делает) Короче будет уроком - не юзать пока не в курсе как оно работает
0
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
02.09.2012, 18:55 #17
Цитата Сообщение от bgm313 Посмотреть сообщение
Вот в простом варианте:
вопрос по коду на картинке: переменная allocp объявлена как static char *, но она не внутри функции. Она будет вести себя так же, как если бы это была переменная static внутри функции?
Т.к. написано "следующая свободная позиция" - как бы намекает на поведение static-переменных
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
02.09.2012, 19:25 #18
Глобальная static переменная (а также static, объявленная внутри любого namespace) имеет ограниченную область видимости в пределах данного cpp файла, ты об этом?
1
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
02.09.2012, 19:36 #19
Цитата Сообщение от Герц Посмотреть сообщение
Глобальная static переменная (а также static, объявленная внутри любого namespace) имеет ограниченную область видимости в пределах данного cpp файла, ты об этом?
Да. А её поведение (точнее поведение компилятора относительно неё) в данном куске кода аналогично тому, которое было бы, если бы она была static и внутри функции alloc?
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
02.09.2012, 19:39 #20
Да, внутри функции она точно так же создавалась бы единожды при входе в программу и сохраняла свое значение вплоть до завершения, локальная static переменная подобна глобальной, но с усеченной областью видимости.
1
PSIAlt
87 / 87 / 8
Регистрация: 19.06.2012
Сообщений: 245
02.09.2012, 19:58  [ТС] #21
Мне кажется в варианте во 2ом посте баг: если выделить 2 блока, потом освободить 1ый, то когда выделим 4ый он перезапишет 2ой (надеюсь я понятно обьяснился).. Или я что-то упустил?
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
02.09.2012, 23:35 #22
Да, внутри функции она точно так же создавалась бы единожды при входе в программу и сохраняла свое значение вплоть до завершения, локальная static переменная подобна глобальной, но с усеченной областью видимости.
Извиняюсь, дал более сильное суждение, чем на деле. Локальная static будет инициализирована лишь при первом достижении её потоком выполнения (то есть при первом вызове alloc, так что поведение не изменится, ведь она нужна лишь для работы alloc ). В остальном - все так же.
1
#pragma
Временно недоступен
954 / 225 / 6
Регистрация: 12.04.2009
Сообщений: 921
03.09.2012, 00:12 #23
Цитата Сообщение от Герц Посмотреть сообщение
Извиняюсь, дал более сильное суждение, чем на деле. Локальная static будет инициализирована лишь при первом достижении её потоком выполнения (то есть при первом вызове alloc, так что поведение не изменится, ведь она нужна лишь для работы alloc ). В остальном - все так же.
Я так понимаю, глобальная static-переменная будет инициализирована при запуске программы, а не функции, как в случае с локальной static-переменной, в этом вся разница?
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
03.09.2012, 00:22 #24
Proof by fire. Да, в этом разница.
1
03.09.2012, 00:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2012, 00:22
Привет! Вот еще темы с ответами:

Задания с++ с собеседования - C++
Предложите ваши варианты решения заданий 1. Перечислите все проблемы, которые вы видите в данном коде: class Foo { public: ...

Пример из собеседования по C++ - C++
Граждане, есть такой пример: class B { private: virtual void f() { std::cout &lt;&lt; &quot;B::f()&quot; &lt;&lt; std::endl;} public: void g() {...

Задание с собеседования (циклы) - C++
День добрый! Был сегодня на собеседовании, и было такое задание где было такое задание: Описать одним предложением что делает данная...

Собеседования по С++ для джуна - C++
Добрый день, если вы бы проводили собеседования по С++ для джуна - какой вопрос по С++ вы бы припасли как самый сложный? Для...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

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