CodeGuard Fehlermeldung: Zeiger in freigegebenen Speicher
-
Hallo,
ich hab das Problem, das wenn mein Programm läuft der Speicher wächst. Nun bin ich dabei mit CodeGuard die Lecks rauszufinden. Das Programm sonst läuft ohne Fehler.
Nun sagt der CodeGuard "Zeiger in freigegebenen Speicher" und springt an die Stelle in der vector.h, wosize_type size() const{ return size_type(end()-begin());}
steht.
Über den AufrufStack hab ich rausbekommen, das es bei folgendem Code passiert:void __fascall TMTeViewer :: SetValue(double Value, time_t Zeit) { TVal sTVal; // TVal ist eine struct im Header deklariet sTVal.value = Value; sTVal.time = Zeit; vValueTime.push_back(sTVal); // vValueTime hab ich im Header deklariet: // vector <TVal> vValueTime; if(vValueTime.size > 0) { ...
Habt Ihr vielleicht eine Idee, wie ich den Fehler beheben kann oder was da noch faul ist.
-
... if(vValueTime.size > 0) ...
Ich dachte, size wäre eine FunktioN?
-
Hi,
ja, das war auch nur ein Tipfehler von mir im Beitrag. sorry
Also im Code steht:
if(vValueTime.size() >0) { ...
Das ist aber leider nicht der Fehler.
-
CodeGuard ist geil, oder!
-
Schon wenn man mit den Fehlermeldungen was anfangen könnte !
-
ela,
ela schrieb:
vValueTime.push_back(sTVal); // vValueTime hab ich im Header deklariet:
hmm ... das klingt zwar fast zu einfach, aber mit jedem Aufruf der Funktion "SetValue" vergrößerst Du halt Deinen Vektor. Wie oft rufst Du denn diese Funktion auf?
-
Hallo,
ich weiß, das ich mit jedem Aufruf meinen Vektor vergrößere und hab das auf eine vorher festgelegte Größe begrenzt.
Das Problem taucht beivValueTime.push_back(sTVal)
(Bin es Step für Step durchgegangen. In der Funktion wird das insert aufgerufen und danach die Ermittlung von size und da kommt die Fehlermeldung.)
schon beim ersten Durchlauf auf. Oder sollte man die Meldungen des CodeGuard nicht für so ernst nehmen?!
-
Durchs Schlüsselloch betrachtet: ich sehe TVal. Ich weiss nicht wie TVal innen drin aussieht. Erfüllt TVal mindestens die drei STL Kriterien...? Der Atem stockt. Die gruseligsten Sachen passieren wenn die drei Bedingungen nicht erfüllt sind... Linker Fehler... Compiler Fehler... Laufzeit Fehler... Fehler jenseits jeder Vorstellungskraft!
Drei ist die Zahl der Mindestanforderungen. Nicht vier, denn vier wären eine zuviel. Zwei wären deren zu wenig. Drei sollen sie sein.CodeGuard ist aber echt geil, oder?