А.2.5. Библиотека Electric Fence
А.2.5. Библиотека Electric Fence
Библиотека Electric Fence, написанная Брюсом Перензом (Bruce Perens), останавливает выполнение программы в той строке, где происходит обращение к памяти за пределами выделенной области. Это единственное средство, позволяющее выявить неправильные операции чтения. Библиотека входит в большинство дистрибутивов Linux, а ее исходные коды можно найти по адресу http://www.perens.com/FreeSoftware.
Как и в случае библиотеки ccmalloc, к объектным файлам программы необходимо подключить код библиотеки Electric Fence:
% gcc -g -Wall -pedantic malloc-use.o -o emalloc-use -lefence
После запуска программы библиотека проверяет правильность обращений к выделенной памяти. В случае нарушения возникает ошибка сегментации:
% ./emalloc-use 12
Electric Fence 2.0.5 Copyright (C) 1987-1998 Bruce Perens.
Please enter a command a 0 12
Please enter a command r 0 12
Segmentation fault
Контекст неправильной операции можно определить с помощью отладчика.
По умолчанию библиотека Electric Fence выявляет только обращения к памяти после выделенной области. Если необходимо, чтобы она находила только обращения к памяти по адресам, предшествующим началу выделенной области, введите такую команду:
% export EF_PROTECT_BELOW=1
Чтобы библиотека отслеживала доступ к освобожденным областям, задайте переменную EF_PROTECT_FREE равной 1. Дополнительные возможности описаны на man-странице libefence.
С целью выявления ошибок доступа библиотека Electric Fence запрашивает для каждой выделенной области как минимум две страницы памяти. По умолчанию конец области приходится на конец первой страницы. Выход за пределы области, т.е. обращение ко второй странице, вызывает ошибку сегментации. Если переменная EF_PROTECT_BELOW равна 1, начало области выравнивается по началу второй страницы. В связи с тем, что за один вызов функции malloc() выделяется не менее двух страниц памяти, библиотека Electric Fence способна потреблять достаточно много памяти, поэтому ее рекомендуется использовать только при отладке.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
7.5. Electric Fence
7.5. Electric Fence Следующее средство, которое мы рассмотрим — это Electric Fence (доступен на ftp://sunsite.unc.edu/pub/Linux/devel/lang/c и во многих дистрибутивах). Несмотря на то что Electric Fence не обнаруживает утечки памяти, он очень помогает в изоляции переполнений буфера. Каждый современный компьютер
7.5.1. Использование Electric Fence
7.5.1. Использование Electric Fence Одна из наиболее примечательных особенностей Electric Fence заключается в простоте ее использования. Нужно всего лишь скомпоновать свою программу с библиотекой libefence.а, указав -lefence в качестве последнего аргумента. В результате код будет готов к
Стандартная библиотека С++
Стандартная библиотека С++ В данном разделе мы кратко рассмотрим стандартную библиотеку С++. На рис. Б.З приводится список базовых заголовочных файлов С++:• <bitset> — шаблонный класс для представления последовательностей битов фиксированной длины,• <complex> — шаблонный
Библиотека муфт
Библиотека муфт Ускорение процесса трехмерного проектирования и конструирования всегда является основной проблемой для разработчиков любой CAD-системы. Однако, несмотря на это, количество узконаправленных прикладных 3D-библиотек не так уж велико (их значительно меньше,
Fence (Линия выбора)
Fence (Линия выбора) Режим Fence (Линия выбора) напоминает режим Crossing Polygon (Пересечение с многоугольником), но в отличие от него последнее звено ломаной линии, замыкающей границу многоугольника, отсутствует. В этом режиме выделяются только те объекты, которые пересекаются
5.12. Библиотека mathn
5.12. Библиотека mathn В программах, выполняющих большой объем математических вычислений, очень пригодится замечательная библиотека mathn, которую написал Кейдзу Исидзука (Keiju Ishitsuka). В ней есть целый ряд удобных методов и классов; кроме того, она унифицирует все классы Ruby для
14.3. Библиотека Shell
14.3. Библиотека Shell Не всегда Ruby удобен в качестве языка сценариев. Например, в языке bash для запуска внешней программы достаточно просто указать ее имя безо всякого дополнительного синтаксиса.Оборотной стороной мощи и гибкости Ruby является более сложный синтаксис. Кроме
Библиотека
Библиотека CoolReaderСайт: http://www.coolreader.orgРазмер: 1,6 МбСтатус: Freeware CoolReader – «читалка» почти идеальная, во всяком случае, для настольного компьютера. Варианта программы для PocketPC, увы, не предусмотрено – в этом случае вас выручит привычный HaaliReader. Кроме того, несколько огорчает
Библиотека Oracle XDK
Библиотека Oracle XDK Основные характеристики.? Платформы: Java, C/C++, PL/SQL.? Расширения: поддержка функций расширения.? Полнота реализации: сравнительно хорошая (уступает Saxon и MSXML).? Разработчик: Oracle Corporation.? URL: http://technet.oracle.com/tech/xml/.Так же как и MSXML, Oracle XDK (от англ. XML Development Kit -