2 Stimmen

Wenn ich clRelease* nicht aufrufe, wird es zu einem Memory Leak führen?

Ich möchte Chromium ein wenig OpenCL-Unterstützung hinzufügen, also habe ich APIs wie clCreateCommandQueue() verwendet, aber ich kann keinen geeigneten Ort in Chromium finden, um die Bereinigung durchzuführen.

Also, wenn ich APIs wie clReleaseCommandQueue() nicht aufrufe, wird das Betriebssystem den Speicher zurückfordern, nachdem der Prozess beendet wurde? Oder muss ich es am Ausgangspunkt des Prozesses aufrufen?

PS, Der Command-Queue wird während des gesamten Lebenszyklus des Prozesses benötigt, daher möchte ich sicherstellen, dass nach Beendigung des Prozesses kein Speicherleck auftritt.

Vielen Dank für die Hilfe.

2voto

chippies Punkte 1575

Da alle OpenCL-Objekte letztendlich vom Gerätetreiber gehalten werden, kann man nicht erwarten, dass sie automatisch freigegeben werden, wenn die Anwendung beendet wird. Das ist immer deine Aufgabe.

0voto

Dithermaster Punkte 6165

Wenn Sie den OpenCL C++-Wrapper (cl.hpp) verwenden, wird der Compiler herausfinden, wo Ihre Objekte aufgeräumt werden sollen (wenn das referenzierende Objekt den Gültigkeitsbereich verlässt).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X