Problem mit std::vector
-
naja klar ist es iwo ein fehler in meinem code aber unterwelchen umständen kann denn test.size() == -1 sein ?! da begreife ich einfach nicht....
hier kann ich mal das schema meines codes verdeutlichen:
//pseudo func1(vector<int> &v_int) { for(15 mal) v_int.push_back(for-index); } func2(vector<int> &v_int2) { func1(v_int2); } int main() { vector<int> i; func2(i); cout << i.size(); }Ich kann mir das ehrlich gesagt auch nicht erklären ...
-
Welcher Compiler? Welche Std-Lib-Implementierung? Wird ja dann wohl eher dort der Fehler drin sein.
-
Bei mir funzt es. Schreibst du irgendwo evtl. außerhalb der Grenzen des Vektors herum?
-
#include <iostream> #include <vector> using namespace stdcompiler : Dev-C++
Wie meinst du das außerhalb ?
Meinst ob ich ein Element anspreche das nicht existiert oder meisnt du ob ich die capazität überschreite ?
-
Ist doch das gleiche. Gib doch einmal an allen möglichen Stellen die Größe des Vektors aus, dann findest du doch schnell die "böse" Stelle. Angefangen bei der Deklaration bis hin zu der jetzigen Ausgabe. Oder nimm einen Debugger...
-
ok werd ich machen .. mal sehen wer der übertäter ist xD
danke
-
keine chance... die stelle die den fehler veruhrsacht hat nichts!! mit dem vector zu tun.. scheint ein ziemlich heftiger bug zu sein... wenn ich den vector mit einem iterator durchzähle läuft alles... und die size stimmt auch ... das is doch krank
xDGruß Chris
-
Foxx90 schrieb:
... die stelle die den fehler veruhrsacht hat nichts!! mit dem vector zu tun..
Ist typisch.
Oftmals merkt man gar nicht "vor Ort", wenn man "Löcher in den Speicher reisst", sondern erst wo ganz anders (bei uns sorgte mal ein fehlendes memset() dafür, dass in einem ganz anderen Modul ein printf() schief ging).Gruß,
Simon2.
-
oh das ein beunruhigender gedanke xD

hmm.. naja ich werde mal weiter forsten...
danke.. ich konnte mir nur nicht erklären wie die size von vector -1 sein kann xDmeine vermutung war folgende:
wenn ich eine referenz zu einem vector erstelle und dieses referenz nach verlasse3n des scopes zerstört wird... tritt ja der desstructor in spiel und weil die beiden vectoren ja durch eine referenz "verbunden" sind, dachte ich dass auch das andere object zerstört wird ...
aber fehlanzeige mein beispiel code ob ging ja ..
-
Eine Referenz ist auch nur ein spezieller Pointer. Also keine Gefahr von wegen Destruktoren.