На петербоксинге памяти, протекающую третью вечеринку DLL

StackOverflow https://stackoverflow.com/questions/3180138

Вопрос

Я ищу способ вылечить, по крайней мере, симптомы утечек, которые я должен использовать. В то время как библиотека (OpenCascade) утверждает, что предоставляет менеджеру памяти, у меня еще не в состоянии сделать его выделением какую-либо память, которую она выделяется.

Я, по крайней мере, хотел бы поставить призывы к этому модулю в «песочнице», чтобы сохранить свое приложение от не потери памяти, когда CONC-модуль даже не работает.

Мой вопрос: пока я понимаю, что это будет уродливым взломом (TM), чтобы сделать это, возможно, можно ли произносить участок памяти, которая будет использоваться специально библиотеками, или построить какую-то песочницу, чтобы я мог отслеживать, какие области памяти они использовали, чтобы освободить их сами, когда я закончу?

Или это будет уродливо взломать, и я должен попытаться решить проблемы иначе?

Это было полезно?

Решение

Единственный надежный способ - отделить использование библиотеки в выделенный процесс. Вы начнете этот процесс, передавайте данные и параметры к нему, запустите библиотечный код, извлеките результаты. После того, как вы решите, что потребление памяти больше не допускается, вы перезагрузите процесс.

Другие советы

Использование библиотеки, которая не сломана, вероятно, будет намного проще, но если бы недоступна замена, вы можете попробовать перехватить вызовы выделения. Если библиотека не слишком плохо «оптимизирована» (специально функционирующая вставка), вы можете разобрать ее и найти MALLOC и бесплатные функции; О загрузке вы можете заменить каждые 4 (или 8 на систему P64) байтовую последовательность, которая кодирует этот адрес с тем, который указывает на ваш собственный распределитель памяти. Это почти гарантированно будет багги, нечитаемым временем, поэтому не делайте этого, если вы сможете найти рабочую замену.

Редактировать:

Пила @ ответ Shartooth, который имеет гораздо лучший шанс на работу. Я все еще советую пытаться найти замену.

Вы должны спросить мнение Романа Лигина - он раньше работал в ОБК. У него есть хотя бы один пост, который упоминает управление памятью http://opencascade.blogspot.com/2009/06/developing-parallel-applications-with_23.html..

Если вы спросите красиво, он может даже написать пост, который объясняет внутренние мероприятия ММГТ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top