[gelöst] Q3PointArray [i] vs value(i) ein komisches Problem

Alles rund um die Programmierung mit Qt
Antworten
robes
Beiträge: 11
Registriert: 1. Dezember 2006 14:14
Wohnort: DO

[gelöst] Q3PointArray [i] vs value(i) ein komisches Problem

Beitrag von robes »

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)...
Zuletzt geändert von robes am 8. Dezember 2006 22:19, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Schonmal dran gedacht dass
T und T& zwei verschiedene Dinge sind?
Wenn Du eine Referenz zurückbekommst und damit auch weiterarbeitest (ohne ein implizites copy zu machen), könnte es sein dass Dein Array z.B. nicht mehr da ist wo es war. Eni Codebeispiel wäre von Vorteil um zu sehen ob das ggf. der Fall ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Mal davon abgesehen, schon mal darüber nachgedacht Q3PointArray durch QPolygon zu ersetzen?
robes
Beiträge: 11
Registriert: 1. Dezember 2006 14:14
Wohnort: DO

Beitrag von robes »

:oops: :lol: :lol: :lol:

Habe das "&" hab ich übersehen. OMG, das würde einiges erklären - hab mit den Addressen rumgerechnet.... ne ne ne... ein bisshen mehr Schlaff währ nicht verkehrt glaube ich...

Danke ;)
upsala hat geschrieben:Mal davon abgesehen, schon mal darüber nachgedacht Q3PointArray durch QPolygon zu ersetzen?
yep, das kommt aber in der nächsten Iteration - erstmal muss alles auf den Supports wieder laufen..
Antworten