Проектирование аллокатора
Проектирование интерфейса своего аллокатора.
В данной статье речь пойдет об интерфейсе для аллокатора памяти.В статье не дается реализация аллокатора - этого добра полно в сети, да и написать такую самому не представляется особой сложности. Здесь говорится лишь о том, как правильно спроектировать его интерфейс.
Статья состоит из двух частей. В статье использован язык С++.
Часть первая: Основы
Начнем с того, что свой аллокатор памяти - одна из немногих вещей, которая может реально увеличить производительность программы. Но он дает ещё одно большое преимущество - возможность отлаживать работу с памятью в debug режиме, легко обнаруживая такие ошибки, как повторное освобождение памяти, освобождение памяти по невалидному указателю и т.п. При желании можно отслеживать и такие ошибки как выход за пределы массива.Конечно, многое из этого может делать, к примеру, отладчик Visual Studio. Но он не сможет точно сказать такую вещь, где была выделена повторно освобождаемая область памяти. А наш аллокатор сможет, но об этом позже.
Начнем с простейшего интерфейса аллокатора.
Чтобы ловить ошибки памяти, нам нужно знать где вызывается каждая из этих функций. А для этого нам нужно имя файла и номер строки. Их можно получить используя макросы:
__FILE__ // имя файла
__LINE__ // номер строки в файле
Дополним интерфейс нашего класса:
Решить эту проблему нам поможет макрос:
Теперь мы пишем так:
Поправим этот недостаток:
Теперь переходим ко второй части статьи.
Страницы: [1] [2] далее
При полном или частичном копировании необходимо указывать прямую ссылку на данную статью.
Юрий Гузенко.
Юрий (Дата )
Все вопросы и предложения высылайте на адрес soft_support@list.ru. Необходимо в заголовке указать название статьи.
Оставь свой отзыв