LINUX.ORG.RU

освободить всю память


0

0

язык С,
есть большая программа,
переделали ее в so(dll),

переделка свелась к замене main на my_main,
и написанию набора функций которые дергают my_main с нужными параметрами.

Но вот беда, судя по всему программа писалась в надежде на то, что по завершению main операционная система освободит всю выделенную память,

можно ли это как-нибудь обойти?

Т.е. нужно по завершению my_main освобождать всю память которая в ней выделена, т.е. привести кучу в состояние в каком она была до вызова,
много поточность не нужна, а вот чтобы способ работал под win32 и linux хотелось бы.

ЗЫ
не хочется подключать dmalloc и копаться кучу времени.

★★★★★

Re: освободить всю память

насколько я понимаю наиболее простое решение при каждом вызове функции из библиотеки рождать процесс,

может какие-нибудь еще идеи?

да кстати, для выделения памяти используется glib, всякие

g_malloc
g_new
g_array_new

fghj ★★★★★
()
Ответ на: Re: освободить всю память от fghj

Re: освободить всю память

в glibc g_malloc по сути сделан так:

void* g_malloc (..) { return malloc (..); }

и по-моему кроме нового процесса вообще вариантов нет. но тогда непонятно, зачем нужна .so и как организовать IPC (разве что программа через sdin/sdout общалась - тогда fork, dup2 - и вперёд)

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