Out of memory - 11.740 KB???
-
Hallo zusammen,
ich habe ein komisches Problem mit meinem 32Bit OpenCV-Programm (laufend auf Win7 64bit mit 6GB RAM, also daran wirds mal nicht liegen^^). Ich allokiere zunächst mithilfe von cvCreateHist() mehrere Histogramme (also es ist dynamisch
- soviel weiß ich und man kann am Ende mit cvReleaseHist() das ganze wieder freigeben, was ich auch tue). Das Programm startet mit 11.508 KB im RAM (laut dem Task-Manager) und geht dann auf 11.704 KB hoch, dann ist es out of memory
. Die Histogramme werden in einer for()-Schleife allokiert. In der habe ich jetzt einen Breakpoint gesetzt. Jeder Schritt allokiert 60KB
(es ist viel...ich weiß). Jetzt frage ich mich, wie ich dann out of memory sein kann (viele meiner Programme haben 100MB arbeitsspeicher-verbrauch und sind trotzdem 32bit und laut task-manager habe ich 60% freien Speicher^^). Dass ich out of memory bin sagt übrigens eine cvAlloc()-Fehlermeldung, nicht etwa VC++.
Vielen Dank schon mal im Voraus,
LauritzPS: Auf meinem alten PC mit 1GB RAM ging es - da hatte ich noch um die 200MB allokiert
und es gab keine Probleme. Jetzt - eine Version später geht nichts mehr
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hast du die Größen, die du anforderst, genau gecheckt? Evtl hast du einen Overflow in einer Berechnung und forderst aus Versehen ein paar GB an?
-
fdfdg schrieb:
Hast du die Größen, die du anforderst, genau gecheckt? Evtl hast du einen Overflow in einer Berechnung und forderst aus Versehen ein paar GB an?
Ja, habe ich. Die Allokierung ist ja immer dieselbe, nur wird sie für mehrere Arrays ausgeführt. Ich debugge mal weiter - vielleicht stoße ich ja auf was Verdächtiges.
Vielen Dank schon mal
Lauritz
-
Habe jetzt herausgefunden, dass ich CV_MAX_ALLOC (oder so ähnlich, es ist in der cxmisc.h) anders setzen kann, um OpenCV zu erlauben, mehr Memory zu allokieren
. Das habe ich gemacht - bis zu 4GB habe ich erlaubt, aber es hat nichts gebracht. Also muss der Fehler wohl tiefer liegen. Ich denke ich schreibe die Funktion neu und umgehe das Problem durch eine andere Funktion oder malloc.
Vielen Dank noch mal,
Lauritz