C
Commodore
Guest
Ich habe folgenden Code:
Diese Funktion ist ein Slot und verbunden mit dem clicked()-Signal eines Buttons. Wenn ich den Code nun kompiliere und ca 3-5 mal auf den Button drücke, stürzt das Programm ab und ich kriege einen Speicherzugriffsfehler.
Dieser Fehler tritt aber nicht immer auf. Manchmal kann ich die Funktion problemlos mehrfach aufrufen, manchmal bekomme ich schon beim ersten Aufruf eine Fehlermeldung.
entries ist ein std::vector<int*>, dabei besteht jedes array in dem Vektor aus 10 Elementen. Das Element 0 hat eine gesonderte Bedeutung, die Elemente 1-9 sollen sukzessive aufgefüllt werden. Dies geschieht in der push()-Methode, wobei immer nach 9 Elementen ein neues Array erstellt wird, welches als nächstes gefüllt wird. Die push()-Methode funktioniert einwandfrei, in Testläufen kann ich sie problemlos 3000 mal aufrufen und es gibt keinen Fehler.
Wenn ich jedoch eine der beiden unteren for-Schleifen auskommentiere, stürzt das Programm nicht ab. Einzeln funktionieren die Schleifen also, aber gemeinsam nicht.
Hat irgendjemand eine Idee wie ich das Problem beheben kann? Ich nutze Qt 4.7.0 und Ubuntu 10.10 [64 bit].
PHP:
void game::next_row(){
int tmp[9];
for(int i = 0 ; i < 9 ; ++i){
tmp[i] = entries.back()[i + 1];
}
std::vector<int*>::iterator last_arr = entries.end();
--last_arr;
for(std::vector<int*>::iterator it = entries.begin() ; it != last_arr ; ++it){
for(int i = 1 ; i < 10 ; ++i){
if((*it)[i] > 0){
push((*it)[i]);
}
}
}
for(int i = 0 ; i < 9 ; ++i){
if(tmp[i] > 0){
push(tmp[i]);
}
}
resize(sizeHint());
update();
}
Diese Funktion ist ein Slot und verbunden mit dem clicked()-Signal eines Buttons. Wenn ich den Code nun kompiliere und ca 3-5 mal auf den Button drücke, stürzt das Programm ab und ich kriege einen Speicherzugriffsfehler.
Dieser Fehler tritt aber nicht immer auf. Manchmal kann ich die Funktion problemlos mehrfach aufrufen, manchmal bekomme ich schon beim ersten Aufruf eine Fehlermeldung.
entries ist ein std::vector<int*>, dabei besteht jedes array in dem Vektor aus 10 Elementen. Das Element 0 hat eine gesonderte Bedeutung, die Elemente 1-9 sollen sukzessive aufgefüllt werden. Dies geschieht in der push()-Methode, wobei immer nach 9 Elementen ein neues Array erstellt wird, welches als nächstes gefüllt wird. Die push()-Methode funktioniert einwandfrei, in Testläufen kann ich sie problemlos 3000 mal aufrufen und es gibt keinen Fehler.
Wenn ich jedoch eine der beiden unteren for-Schleifen auskommentiere, stürzt das Programm nicht ab. Einzeln funktionieren die Schleifen also, aber gemeinsam nicht.
Hat irgendjemand eine Idee wie ich das Problem beheben kann? Ich nutze Qt 4.7.0 und Ubuntu 10.10 [64 bit].