Pregunta

Estoy buscando una manera de curar al menos los síntomas de una DLL con fugas tengo que usar. Mientras que la biblioteca (OpenCascade) reclamaciones a ofrece un administrador de memoria, tengo hasta el momento de ser incapaz de hacerlo liberar cualquier memoria asignó.

Me gustaría al menos deseo de retener las llamadas a este módulo en una 'caja de arena', con el fin de mantener a mi solicitud de no perder la memoria, mientras que el OCC-módulo es ni siquiera corría más.

Mi pregunta es: Mientras me di cuenta de que sería un corte del FEO (TM) para hacerlo, es posible asignar previamente un tramo de memoria que se utilizará específicamente por las bibliotecas, o para construir una especie de cajón de arena a su alrededor para que pueda realizar un seguimiento de qué áreas de la memoria que se utilizan con el fin de liberarlos a mí mismo cuando estoy acabado?

O podría ser que a un hack feo y yo debería tratar de resolver los problemas de otra manera?

¿Fue útil?

Solución

La única forma fiable es separar el uso de la biblioteca en un proceso dedicado. Va a empezar ese proceso, pasar los datos y parámetros a ella, ejecute el código de la biblioteca, recuperar los resultados. Una vez que decida el consumo de memoria ya no es tolerable que se reinicia el proceso.

Otros consejos

El uso de una biblioteca que no está roto, probablemente sería mucho más fácil, pero si un ins't reemplazo disponibles que podría tratar de interceptar las llamadas de asignación. Si la biblioteca no está tan mal 'optimizado' (específicamente la función inline) que podría desmontarlo y localice el malloc y funciones libres; de la carga, se puede reemplazar cada secuencia de bytes 4 (u 8 en el sistema de p64) que codifica esa dirección con una que apunta a su propio asignador de memoria. Esto es casi seguro que sea un buggy, Timesink ilegible, sin embargo, por lo que no hacer esto si se puede encontrar un sustituto de trabajo.

Editar:

Saw @ respuesta de sharptooth, que tiene una mejor oportunidad de trabajo. Todavía le aconsejaría tratando de encontrar un reemplazo sin embargo.

Usted debe pedir la opinión de Romano Lygin - se utiliza para el trabajo en OCC. Él tiene al menos un post que menciona la gestión de memoria http: // opencascade.blogspot.com/2009/06/developing-parallel-applications-with_23.html.

Si pides bien, que incluso podría escribir un post que explica internos de mmgt.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top