3.2.1.7. Использование персональных программ распределения
3.2.1.7. Использование персональных программ распределения
Набор функций с malloc() является набором общего назначения по выделению памяти. Он должен быть способен обработать запросы на произвольно большие или маленькие размеры памяти и осуществлять все необходимые учетные действия при освобождении различных участков выделенной памяти. Если ваша программа выделяет значительную динамическую память, вы можете обнаружить, что она тратит большую часть своего времени в функциях malloc().
Вы можете написать персональную программу распределения — набор функций или макросов, которые выделяют большие участки памяти с помощью malloc(), а затем дробят их на маленькие кусочки по одному за раз. Эта методика особенно полезна, если вы выделяете множество отдельных экземпляров одной и той же сравнительно небольшой структуры.
Например, GNU awk (gawk) использует эту методику. Выдержка из файла awk.h в дистрибутиве gawk (слегка отредактировано, чтобы уместилось на странице):
#define getnode(n) if (nextfree) n = nextfree,
nextfree = nextfree->nextp; else n = more_nodes()
#define freenode(n) ((n)->flags = 0, (n)->exec_count = 0,
(n)->nextp = nextfree, nextfree = (n))
Переменная nextfree указывает на связанный список структур NODE. Макрос getnode() убирает из списка первую структуру, если она там есть. В противном случае она вызывает more_nodes(), чтобы выделить новый список свободных структур NODE. Макрос freenode() освобождает структуру NODE, помещая его в начало списка.
ЗАМЕЧАНИЕ. Первоначально при написании своего приложения делайте это простым способом: непосредственно используйте malloc() и free(). Написание собственного распределителя вы должны рассмотреть лишь в том и только в том случае, если профилирование вашей программы покажет, что она значительную часть времени проводит в функциях выделения памяти.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Ввод персональных данных
Ввод персональных данных Для продолжения ввода данных нажмите кнопку
Пример: использование обработчиков завершения для повышения качества программ
Пример: использование обработчиков завершения для повышения качества программ Обработчики исключений и завершения позволяют повысить надежность программ как за счет упрощения процедуры восстановления программы после возникновения ошибок и исключений, так и за счет
ПРИЛОЖЕНИЕ А Использование примеров программ
ПРИЛОЖЕНИЕ А Использование примеров программ На Web-сайте книги (http://www.awprofessional.com/titles/0321256190) находится zip-архив, который содержит исходные тексты всех примеров программ, а также соответствующие заголовочные файлы, служебные функции, файлы проектов и исполняемые файлы. Ряд
Использование программ поддержки NetBEUI
Использование программ поддержки NetBEUI Пакет, предназначенный для поддержки стека NetBEUI, содержит файл README, в котором полностью описан процесс инсталляции. Установка пакета может быть выполнена двумя способами. Следуя одному из них, надо отредактировать файл Makefile, указав в
1.2.5. Использование сеансов. Автозапуск программ и сохранение сеанса
1.2.5. Использование сеансов. Автозапуск программ и сохранение сеанса Разгар рабочего дня. Запущено много программ, открыто много документов. Вам нужно отлучиться до конца дня, поэтому нужно выключить компьютер. Вам не хочется завтра открывать все эти документы заново?
1.4.7. Настройка персональных служб
1.4.7. Настройка персональных служб После регистрации на Яндексе для вас будет доступна еще одна ссылка на странице настроек — Настройка персональных служб. Щелкнув на этой ссылке, вы попадете на сервис Яндекс. Паспорт — страницу Настройка Яндекса. Здесь уже можно
МИР ПРОГРАММ
МИР ПРОГРАММ Герой Мольера, месье Журдэн, был в высшей степени удивлен, когда узнал, что всю жизнь говорил прозой, не подозревая этого. Благодаря появлению ЭВМ и вызванному этим появлением возникновению вычислительной науки, или информатики, человечество оказывается в
Кража персональных данных с последующим выманиванием денег
Кража персональных данных с последующим выманиванием денег Одним из наиболее изощренных методов мошенничества является кража персональных данных с последующим выманиванием денег. При этом деньги могут выманиваться как у вас, так и ничего не подозревающих ваших
Другие распределения случайных чисел
Другие распределения случайных чисел Если случайные числа используются для моделирования некоторого процесса, то вы можете обнаружить, что все рассмотренные выше генераторы случайных чисел не позволяют решить поставленную задачу. Это вызвано равномерным
Использование внешних программ
Использование внешних программ Внешние программы являются частью ОО-метода, помогая сочетать старое ПО с новым. Любой метод проектирования ПО, допускающий возможность повторного использования, должен допускать программный код, написанный на других языках. Трудно было
Как работают блоки питания персональных компьютеров? Какие блоки питания бывают?
Как работают блоки питания персональных компьютеров? Какие блоки питания бывают? http://pc-doc.spb.ru/atx.html Блок питания — жизненно важная часть компьютера, без которой его функционирование невозможно. Лишенный блока питания компьютер — всего лишь мертвая коробка, наполненная
Пишем правильно! Готовые рецепты действительно защищённых персональных коммуникаций Евгений Золотов
Пишем правильно! Готовые рецепты действительно защищённых персональных коммуникаций Евгений Золотов Опубликовано 08 октября 2013 Есть старый, времён ФИДО и раннего Веба, анекдот. Новоиспечённого интернет-предпринимателя, запустившего очередную
12.14. СОПРОВОЖДЕНИЕ ПРОГРАММ
12.14. СОПРОВОЖДЕНИЕ ПРОГРАММ Сопровождение программ — "ложка дегтя" для каждого программиста. Это всегда помеха при начале разработки какого-либо нового проекта, заставляющая отвлекаться от разработки проекта и возвращаться к старым программам и старым проблемам. Ничто
СЕЛО ЩЕПЕТНЕВКА: Кривая распределения
СЕЛО ЩЕПЕТНЕВКА: Кривая распределения Автор: Василий ЩепетневНаличие людей, разумом не богатых, является фактом установленным. То тут то там появляются статьи, в которых сообщается: третья часть населения страдает олигофренией в стадии умеренной дебильности.