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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.61
PSIAlt
 Аватар для PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
02.09.2012, 00:16     Задача с собеседования (аллокатор памяти) #1
Вопрос звучит так: "Напишите быстрый аллокатор памяти"
Как я его понимаю: можно пожертвовать растратой памяти, всякими наворотами, возможно максимальной величиной обьекта..

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

ООП. Тестовое задание собеседования. C++
Задание с собеседования (циклы) C++
C++ Пример из собеседования по C++
C++ Задача на строки с выделением памяти
Аллокатор в chrome C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PSIAlt
 Аватар для PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
02.09.2012, 19:58  [ТС]     Задача с собеседования (аллокатор памяти) #21
Мне кажется в варианте во 2ом посте баг: если выделить 2 блока, потом освободить 1ый, то когда выделим 4ый он перезапишет 2ой (надеюсь я понятно обьяснился).. Или я что-то упустил?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
02.09.2012, 23:35     Задача с собеседования (аллокатор памяти) #22
Да, внутри функции она точно так же создавалась бы единожды при входе в программу и сохраняла свое значение вплоть до завершения, локальная static переменная подобна глобальной, но с усеченной областью видимости.
Извиняюсь, дал более сильное суждение, чем на деле. Локальная static будет инициализирована лишь при первом достижении её потоком выполнения (то есть при первом вызове alloc, так что поведение не изменится, ведь она нужна лишь для работы alloc ). В остальном - все так же.
#pragma
Временно недоступен
 Аватар для #pragma
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
03.09.2012, 00:12     Задача с собеседования (аллокатор памяти) #23
Цитата Сообщение от Герц Посмотреть сообщение
Извиняюсь, дал более сильное суждение, чем на деле. Локальная static будет инициализирована лишь при первом достижении её потоком выполнения (то есть при первом вызове alloc, так что поведение не изменится, ведь она нужна лишь для работы alloc ). В остальном - все так же.
Я так понимаю, глобальная static-переменная будет инициализирована при запуске программы, а не функции, как в случае с локальной static-переменной, в этом вся разница?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2012, 00:22     Задача с собеседования (аллокатор памяти)
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
03.09.2012, 00:22     Задача с собеседования (аллокатор памяти) #24
Proof by fire. Да, в этом разница.
Yandex
Объявления
03.09.2012, 00:22     Задача с собеседования (аллокатор памяти)
Ответ Создать тему
Опции темы

Текущее время: 19:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru