Frage

Ich bin auf der Suche nach einem Weg zur Heilung zumindest die Symptome eines undichten DLL i zu verwenden. Während die Bibliothek Ansprüche (Opencascade) einen Speichermanager bietet, habe ich als der noch nicht in der Lage, um es jeden Speicher freigeben lassen zugeordnet.

ich zumindest Wunsch wäre, die Anrufe zu diesem Modul in einer ‚Sandbox‘ zu setzen, um meine Anwendung zu verhindern, nicht zu verlieren Speicher, während das OCC-Modul ist nicht einmal mehr ausgeführt wird.

Meine Frage ist: Während ich erkennen, dass es ein hässliches HACK (TM) wäre, dies zu tun, ist es möglich, eine Strecke von Speicher vorzubelegen von den Bibliotheken speziell verwendet werden sollte, oder eine Art Sandbox um ihn zu bauen so kann ich von Speicher verfolgen, welche Bereiche sie verwendet, um sie selbst zu lösen, wenn ich fertig bin?

Oder dass zu hässlich einen Hack sein würde, und ich soll die Probleme versuchen, anders zu lösen?

War es hilfreich?

Lösung

Die einzige zuverlässige Art und Weise ist die Benutzung der Bibliothek in einen eigenen Prozess zu trennen. Sie werden diesen Prozess zu starten, übergeben Daten und Parameter, um es, die Bibliothek Code ausführen, Ergebnisse abzurufen. Sobald Sie den Speicherverbrauch entscheiden ist nicht mehr tolerierbar Sie den Prozess neu zu starten.

Andere Tipps

Mit einer Bibliothek, die nicht gebrochen ist wahrscheinlich viel einfacher wäre, aber wenn ein Ersatz ins't verfügbar Sie könnten versuchen, die Zuweisung Anrufe abfangen. Wenn die Bibliothek nicht zu schlecht ‚optimiert‘ ist (genauer gesagt Funktion inlining) konnte man es zerlegen und die malloc und freie Funktionen ausfindig zu machen; beim Laden, können Sie alle 4 (oder 8 auf p64-System) Byte-Sequenz, die codiert die Adresse mit einem, dass Punkte auf Ihrem eigenen Speicherzuordner ersetzen. Dies ist fast garantiert einen Buggy sein, unlesbar TimeSink, obwohl, so tun dies nicht, wenn Sie einen Arbeits Ersatz finden können.

Edit:

Saw @ Sharptooth Antwort, die eine viel bessere Chance zu arbeiten hat. Ich würde immer noch raten versuchen, obwohl einen Ersatz zu finden.

Sie sollten Roman Lygin Meinung fragen - er verwendet bei OCC an die Arbeit. Er hat mindestens eine Stelle, die Speicherverwaltung erwähnt http: // opencascade.blogspot.com/2009/06/developing-parallel-applications-with_23.html .

Wenn Sie nett fragen, könnte er auch einen Beitrag schreiben, die mmgt Interna erklärt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top