Вопрос № 180462: Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким способом: структура данных - односвязный упорядочен...
Вопрос № 180462:
Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким способом: структура данных - односвязный упорядоченный список стратегия размещения - "следующий подходящий".если немного об этой стратегии - это стратегия выделения памяти, когда при выделении блока памяти запоминается место в списке "дыр"(свободная часть памяти в выделенном блоке), где
был выделен блок, и в следующий раз поиск начинается не с начала списка, а с запомненного места(с обеспечением возможности посде достижения конца списка просмотреть и его начало).т.о. ищется такая "дыра"(свободная часть памяти), чтобы она была не меньше размеров запрошенного блока. Возможно я маловато написал теории есть более подробное описание в приложении в ссылке
Так вот:Программа должна в
начале работы запросить блок памяти у операционной системы, а затем применять процедуры распределения памяти (выделение блока памяти заданного размера и освобождение ранее выделенного блока памяти) для выделения и освобождения блоков памяти внутри запрошенного пула.Процедура блока памяти должна возвращать спецификатор начала выделенного блока. Процедура освобождения блока должна освобождать блок, выделенный спецификатором. Такие задачи(и даже
похожие) мне нигде не попадались, вот нашел только словесный алгоритм но не уверен что он наилучший для этой задачи(приложение). Помогите пожалуйлста реализовать задачу на Си p.s. используется компилятор gcc в linux debian 5
Отправлен: 27.10.2010, 09:10
Вопрос задал: Timmy (Посетитель)
Всего ответов: 1 Страница вопроса »
Отвечает vladisslav (6-й класс) :
Здравствуйте, Timmy! Сделал, чтобы собиралось без предупреждений так gcc -o t t.c -ansi -pedantic борланд по идее должно устроить. Перевёл комментарии на русский (не люблю переключать раскладку, хоть и одной клавишей). Нет обработки некорректных вызовов ( не выравненных на границу блока указателей, неправильного размера и т.п.), но вроде не сегфолтится. Если будете использовать не в учебных целях, добавьте обработку ошибок программиста
и возможно освобождение в стиле c (без указания размера, размер можно хранить перед началом блока и получать ((unsigned *)ptr)[-1]) ).
Приложение:
Ответ отправил: vladisslav (6-й класс)
Ответ отправлен: 31.10.2010, 12:32
Номер ответа: 263750
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 263750
на номер 1151 (Россия) |
Еще номера »
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.