Domanda

Sto cercando un modo per curare almeno i sintomi di una DLL che perde devo usare. Mentre la biblioteca (OpenCascade) rivendicazioni per fornisce un gestore di memoria, ho come ancora essere in grado di rendere rilascia la memoria è allocata.

vorrei almeno desiderio di mettere le chiamate a questo modulo in una 'sandbox', al fine di mantenere la mia domanda da non perdere la memoria, mentre l'OCC-modulo non è ancora in esecuzione più.

La mia domanda è: mentre mi rendo conto che sarebbe un HACK UGLY (TM) per farlo, è possibile preallocare un tratto di memoria da utilizzare specificamente dalle biblioteche, o per costruire una sorta di sandbox intorno ad esso così posso tenere traccia di quali aree di memoria hanno usato al fine di liberarli me stesso quando ho finito?

O sarebbe che essere quella di un hack brutto e mi dovrebbe cercare di risolvere i problemi in altro modo?

È stato utile?

Soluzione

L'unico modo affidabile è quello di separare l'uso della biblioteca in un processo dedicato. Si inizierà questo processo, passare i dati ei parametri ad esso, eseguire il codice della libreria, recuperare i risultati. Una volta che si decide il consumo di memoria non è più tollerabile che si riavvia il processo.

Altri suggerimenti

Utilizzo di una libreria che non è rotto probabilmente sarebbe molto più facile, ma se un ins't sostitutiva si potrebbe provare intercettare le chiamate di allocazione. Se la libreria non è troppo male 'ottimizzato' (in particolare la funzione inlining) si potrebbe smontare e individuare il malloc e funzioni libere; sul caricamento, è possibile sostituire ogni 4 (o 8 su P64 del sistema) sequenza di byte che codifica quell'indirizzo con uno che punti al proprio allocatore di memoria. Questo è quasi garantito per essere un buggy, Timesink illeggibile, però, così non farlo se si può trovare un sostituto di lavoro.

Modifica:

Sega @ risposta di sharptooth, che ha molte più possibilità di lavorare. Mi piacerebbe ancora consiglio cercando di trovare un sostituto però.

Si dovrebbe chiedere il parere di Roman Lygin - aveva l'abitudine di lavoro a occ. Egli ha almeno un post che parla di gestione della memoria http: // opencascade.blogspot.com/2009/06/developing-parallel-applications-with_23.html.

Se chiedete bene, potrebbe anche scrivere un post che spiega internals di mmgt.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top