LINUX.ORG.RU

gcc и освобождение памяти


0

0

Есть прога которая довольно много выделяет и освобождает памяти. Сегодня увидел что память не освобождается (вернее она то освобождается - valgrind не матерится), но если посмотреть в top-е то прога как занимала так и занимает. Далее при выделении памяти судя по всему используется та память которая должна была быть удалена. Написал маленькую тестовую програмку которая просто выделяла произвольное количество блоков блоков, потом удаляла - размер занимаемой памяти до выделения и после различный (во втором случае больше). Запустил через strace, посмотрел на вызовы mmap2 и munmap - так и есть память повторно используется и окончательно удаляется только по завершению программы. Как это побороть, очень надо чтобы программа удаляла память по честному.

Вот ты и открыл секрет утечек памяти в firefox:) А по существу в таких случаях помогает сделать один аллок во время запуска программы, а потом переиспользовать выделенный кусок памяти. Т.е написать свой проблемно ориентированный аллокатор.

vgudkov
()
Ответ на: комментарий от vgudkov

Я уже успел найти в гугле что такое же и у FF :). Может есть какой-то хороший аллокатор? Сейчас тестирую гугловский и OpenBSD-ишный..

TaranSergey
() автор топика
Ответ на: комментарий от TaranSergey

Всё, OpenBSD-ишный аллокатор полностью решил проблему.

TaranSergey
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.