[gelöst] Q3PointArray [i] vs value(i) ein komisches Problem
Verfasst: 8. Dezember 2006 21:48
Da bin ich wieder mit nem neuen Problem.
Ich benutze ein Q3PointArray und hatte für die Zugriffe eigentlich den [] Operator benutzt. Bei lese- und schreiboperationen ins Array hatte ich keine Probleme, nur dann, wenn ich das Array per return ausgegeben habe und der nächsten Methode als Parameter übergeben habe, habe ich auf der Stelle (bevor irgendwas in der zweiten Methode gemacht wurde) eine "Heap block past requested size" Exception rausgeworfen bekommen. Das geschah jedoch beim jeden Zugriff sondern erst nach ein paar Iterationen.
Voller verzweiflung habe ich alle [] operatoren durch value() ersetzt. Und siehe da - es läuft ohne Probleme. Kurz in die Referenz nachgeschaut:
T QVector::value ( int i ) const
Returns the value at index position i in the vector.
If the index i is out of bounds, the function returns a default-constructed value. If you are certain that i is within bounds, you can use at() instead, which is slightly faster.
T & QVector::operator[] ( int i )
Returns the item at index position i as a modifiable reference.
i must be a valid index position in the vector (i.e., 0 <= i < size()).
Es sind keine Eigenschaften dabei, die auf so ein verhalten schliessen könnten - ich könnte es verstehen, wenn ich gleich beim Zugriff ne "index out of bound exception" rausgeworfen bekommen hätte, aber es geschah absolut NICHTS. Erst bei der Übergabe streikte er...
Hat jemand ne Vermutung was das sein könnte? Ich befürchte, dass das Programm jetzt inkorrekte berechnungen durchführen könnte (obwohl es läuft)...
Ich benutze ein Q3PointArray und hatte für die Zugriffe eigentlich den [] Operator benutzt. Bei lese- und schreiboperationen ins Array hatte ich keine Probleme, nur dann, wenn ich das Array per return ausgegeben habe und der nächsten Methode als Parameter übergeben habe, habe ich auf der Stelle (bevor irgendwas in der zweiten Methode gemacht wurde) eine "Heap block past requested size" Exception rausgeworfen bekommen. Das geschah jedoch beim jeden Zugriff sondern erst nach ein paar Iterationen.
Voller verzweiflung habe ich alle [] operatoren durch value() ersetzt. Und siehe da - es läuft ohne Probleme. Kurz in die Referenz nachgeschaut:
T QVector::value ( int i ) const
Returns the value at index position i in the vector.
If the index i is out of bounds, the function returns a default-constructed value. If you are certain that i is within bounds, you can use at() instead, which is slightly faster.
T & QVector::operator[] ( int i )
Returns the item at index position i as a modifiable reference.
i must be a valid index position in the vector (i.e., 0 <= i < size()).
Es sind keine Eigenschaften dabei, die auf so ein verhalten schliessen könnten - ich könnte es verstehen, wenn ich gleich beim Zugriff ne "index out of bound exception" rausgeworfen bekommen hätte, aber es geschah absolut NICHTS. Erst bei der Übergabe streikte er...
Hat jemand ne Vermutung was das sein könnte? Ich befürchte, dass das Programm jetzt inkorrekte berechnungen durchführen könnte (obwohl es läuft)...