Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.05.2022
Сообщений: 4

Перехват функций malloc/free для поиска утечек памяти

23.05.2022, 14:09. Показов 1892. Ответов 9

Студворк — интернет-сервис помощи студентам
Необходимо написать программу, которая перехватывает данные функции и ищет утечки в памяти. Заранее благодарю за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.05.2022, 14:09
Ответы с готовыми решениями:

Тулза для поиска утечек памяти
Прога, написанная мною, сильно тормозит. Скорее всего имеются утечки памяти. Подскажите какую-нибудь тулзу для поиска утечек памяти в коде,...

Освобождение памяти malloc free
В общем работаю над расширением для php (для тренировки в php и в c++ сразу) Суть дела вот в чем, наткнулся на конвертер php массива в...

Подскажите программу для диагностики утечек памяти
Здравствуйте. В одном блоге почитал, что диспетчер задач для диагностики утечек не предназначен. Подскажите пожалуйста программу, которая...

9
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
23.05.2022, 20:09
Есть утилита valgrind, которая сама обнаруживает утечки памяти.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[humanoid@comp tmp]$ valgrind ./a.out 
==5202== Memcheck, a memory error detector
==5202== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==5202== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
==5202== Command: ./a.out
==5202== 
==5202== 
==5202== HEAP SUMMARY:
==5202==     in use at exit: 128 bytes in 1 blocks
==5202==   total heap usage: 1 allocs, 0 frees, 128 bytes allocated
==5202== 
==5202== LEAK SUMMARY:
==5202==    definitely lost: 128 bytes in 1 blocks
==5202==    indirectly lost: 0 bytes in 0 blocks
==5202==      possibly lost: 0 bytes in 0 blocks
==5202==    still reachable: 0 bytes in 0 blocks
==5202==         suppressed: 0 bytes in 0 blocks
==5202== Rerun with --leak-check=full to see details of leaked memory
==5202== 
==5202== For lists of detected and suppressed errors, rerun with: -s
==5202== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
0
0 / 0 / 0
Регистрация: 23.05.2022
Сообщений: 4
24.05.2022, 12:51  [ТС]
благодарю! но задача - написать код, который будет это делать)
0
Модератор
Эксперт Java
 Аватар для alecss131
2860 / 1366 / 409
Регистрация: 11.08.2017
Сообщений: 4,382
Записей в блоге: 2
24.05.2022, 12:53
Мое имхо перехвата этих функций не достаточно для устранения утечек, куда проще программу сломать, например не вовремя удалив данные
0
0 / 0 / 0
Регистрация: 23.05.2022
Сообщений: 4
24.05.2022, 13:02  [ТС]
я понимаю, но к сожалению, такова была постановка задачи
0
147 / 135 / 50
Регистрация: 14.05.2021
Сообщений: 642
24.05.2022, 13:30
Цитата Сообщение от ana18002 Посмотреть сообщение
Необходимо написать программу, которая перехватывает данные функции и ищет утечки в памяти.
Программу писать не буду. Вариант, как написать, есть тут:
man __malloc_hook
Даже с примером. Если будет что-то не получатся, тогда спрашивай.
0
0 / 0 / 0
Регистрация: 23.05.2022
Сообщений: 4
24.05.2022, 14:40  [ТС]
Скопировала протестировать код из примера. Из-за чего это возникает?
Миниатюры
Перехват функций malloc/free для поиска утечек памяти  
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
24.05.2022, 16:06
Цитата Сообщение от ana18002 Посмотреть сообщение
Из-за чего это возникает?
Предупреждает, что __mallok_hook() является устаревшей. Это означает, что в будущем эта функция может исчезнуть и проект вообще не скомпилируется.

Для сдачи лабы/курсача пойдёт.

Для работы придётся мудрить с перехватом функций в либах через LD_PRELOAD - очень геморойно, надо вам сказать...
0
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
24.05.2022, 22:12
Цитата Сообщение от drfaust Посмотреть сообщение
Для работы придётся мудрить с перехватом функций в либах через LD_PRELOAD - очень геморойно, надо вам сказать...
Вчера когда этот пост увидел, стало интересно... нашёл эту статью. Но пример у меня не работал - падал в segfault при попытке вызвать printf() из .so. Если убрать printf(), то, вроде, работал и возвращал указатель.
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
25.05.2022, 06:01
Цитата Сообщение от Humanoid Посмотреть сообщение
Но пример у меня не работал - падал в segfault при попытке вызвать printf() из .so.
Так и должно быть. printf() не является реентерабельной, более того, она сама вызывает malloc()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2022, 06:01
Помогаю со студенческими работами здесь

malloc/free
Делаю устройство. Atmega16. Принимает пакеты по RF. Всего полезных данных передается 512 байт. Они влазят в 10 пакетов. Знаю...

malloc, free error
Здравствуйте. Возникла следующая проблема. Код ниже: string http_headers = "GET /index.asd HTTP/1.0 Host: 127.0.0.1:1101...

Из malloc-free в new delete
Есть код с выделением памяти с помощью malloc, надо сделать с new delete Вроде сделал, освобождение памяти работает, а с выделением...

Грабли malloc/free
С динамической памятью впервой работаю, от сюда и грабли Есть структура typedef struct { uint8_t data_size; uint8_t *data;...

Собственная реализация malloc, free
Нужно написать собственную реализацию malloc, free без использования calloc и всего подобного. Где можно об этом почитать или посмотреть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru