Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2009, 16:00   #11
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию А почитать - никак?

А почитать литературу - ну никак невозможно?
Для борьбы с фрагментацией: метод близнецов и метод Дональда Кнута.
В первом томе у того же Кнута расписано до последней запятой.Он все это исследовал еще 40 лет назад.
И не только он.
Когда же классиков-то читать начнем?

Последний раз редактировалось LaptevVV; 12.09.2009 в 17:38.
LaptevVV вне форума Ответить с цитированием
Старый 12.09.2009, 16:08   #12
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Вот никак не придумать, как избавиться от изначально заданного количества блоков. Вдруг юзер захочет выделить память под массив из 10 мегабайт char'ов.. В моем варианте, например, можно выделить только 1000 (ну или сколько укажешь).

Мне кажется, или без этого ограничения никак не обойтись?
Ну мне в голову пришла только такая мысля: поделить эти наши 10 мегабайт на две части с "плавающей" границей. Слева пишем служебную информацию, а справа - пользовательские данные. При malloc: занимаем слева память под хранение его адреса и размера и справа резервируем местечко под сам блок данных и возвращаем на него указатель. Но тут куча дополнительных трудностей вылезет

LaptevVV, ну это скучно... Оно же понятно, что всё придумано до нас, но надо же свой велосипед собрать

Последний раз редактировалось pu4koff; 12.09.2009 в 16:12.
pu4koff вне форума Ответить с цитированием
Старый 12.09.2009, 16:26   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

LaptevVV, а по-вашему подобные задания зачем даются? Чтобы слить откуда-нибудь алгоритм/готовое решение, или, все-таки, чтобы человек сам подумал?
Если мне вдруг понадобится что-то подобное в решении реальных задач, то не сомневайтесь, почитаю.

Цитата:
Сообщение от pu4koff
Ну мне в голову пришла только такая мысля: поделить эти наши 10 мегабайт на две части с "плавающей" границей. Слева пишем служебную информацию, а справа - пользовательские данные. При malloc: занимаем слева память под хранение его адреса и размера и справа резервируем местечко под сам блок данных и возвращаем на него указатель. Но тут куча дополнительных трудностей вылезет
Все будет хорошо, пока юзер будет выделять память. Но вот когда начнет освобождать, то опять возникает проблема с чистыми кусками памяти. Вроде, в итоге получится примерно то же, что и в моем варианте, только без доп. массивов. И, насколько я вижу, исходные 10 мегабайт довольно быстро закончатся. Особенно если юзер выделяет много мелких блоков.

Цитата:
Сообщение от pu4koff
Оно же понятно, что всё придумано до нас, но надо же свой велосипед собрать
Вот-вот )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.09.2009, 17:40   #14
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

У Дональда Кнута - интереснейшая информация об исследовании проблем фрагментации - это раз.
Второе - он не дает готовых программ, только алгоритмы. Прогу написать - это еще голову поломать надо. Вот тут-то усвоение знаний и произойдет: детальный разбор алгоритма ляжет на готовую прогу.
И это гораздо больше повысит ваш профессиональный уровень, чем изобретение велосипеда.
LaptevVV вне форума Ответить с цитированием
Старый 12.09.2009, 18:32   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

LaptevVV
У меня сейчас нет столько свободного времени, чтобы читать Кнута. И намного быстрее будет изобрести велосипед (что я уже и сделал), чем разбираться как устроен чужой, пусть даже общепринятый или сверхэффективный.
К тому же, лично мне интересно придумать алгоритм самому.
А готовые алгоритмы нужно изучать именно после того, как сам попробуешь, поэкспериментируешь. Если изначально пользоваться всем готовым, то можно деградировать.
Не просто же так изучают сортировку пузырьком, когда давно уже есть быстрая, Шелла и прочие.

О пользе чтения я и сам прекрасно знаю. Впредь можете мне об этом не напоминать.
Если Вам больше нечего сказать по существу, кроме как расхваливать данную книгу, то не вижу смысла продолжать диалог.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
своя функция LeoN PHP 3 01.08.2009 21:54
malloc free Ошибка. BeNN Общие вопросы C/C++ 19 09.07.2009 12:46
своя процедура san72 Общие вопросы Delphi 6 26.05.2009 22:41
Проблемы с выделением динамической памяти malloc (recalloc) slips Общие вопросы C/C++ 6 29.04.2009 19:27
Своя ОС koljsch Общие вопросы C/C++ 5 22.03.2009 09:38