stanlee Δημοσ. 24 Ιανουαρίου 2008 Δημοσ. 24 Ιανουαρίου 2008 Γειά σας, μπορεί να με βοηθήσει κανείς με αυτό το Exception;;; Το google-αρα και βρήκα αυτό. Δεν καταλαβαίνω όμως πώς μπορώ να το διορθώσω. πλιζ χελπ!!! [Debugger Exception Notification] Project myProject.exe raised exception class _STL::out_of_range with message 'Exception Object Address: 0x704C9A' When you see this, check out the line of code pointed to. When you see the code below (from the header file _vector.h) you know you've been reading/writing out of the range of your std::vector. __stl_throw_out_of_range("vector"); P.S. Be happy that this error occurred! You used the member function at() instead of the index operator []. Would you've used the latter, this would be a time bomb error.
Directx Δημοσ. 24 Ιανουαρίου 2008 Δημοσ. 24 Ιανουαρίου 2008 Αυτό το λάθος σημαίνει πως δοκίμασες να διαβάσεις περισσότερα στοιχεία από όσα έχουν δηλωθεί στο vector σου, όταν συμβαίνει αυτό η ρουτίνα vector.at δημιουργεί ένα out_of_range exception. Ο παρακάτω κώδικας (γραμμένος σε CodeGear Turbo C++ 2006) δεσμεύει ένα vector με 5 int και παράγει αυτό το σφάλμα, δοκιμάζοντας να διαβάσει το 6 στοιχείο του vector μας (μετράμε ως n-1). Μόλις αυτό συμβεί, το out_of_range λάθος «πιάνεται» με την βοήθεια της try{ }catch{ } και παρουσιάζεται στο stdout του χρήστη. > //-Vector "out of range"-exception example (directx)------------------------- #include <iostream> #include <vector> #ifdef __BORLANDC__ #pragma hdrstop #endif //--------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { try { std::vector<int> vecData = std::vector<int>(5); std::cout<<vecData.at(5)<<std::endl; } catch(std::out_of_range) { std::cout<<"We just raised an \"Out_of_range\" exception!"<<std::endl; } return 0; } //---------------------------------------------------------------------------
stanlee Δημοσ. 24 Ιανουαρίου 2008 Μέλος Δημοσ. 24 Ιανουαρίου 2008 Αυτό το λάθος σημαίνει πως δοκίμασες να διαβάσεις περισσότερα στοιχεία από όσα έχουν δηλωθεί στο vector σου, όταν συμβαίνει αυτό η ρουτίνα vector.at δημιουργεί ένα out_of_range exception. Ο παρακάτω κώδικας (γραμμένος σε CodeGear Turbo C++ 2006) δεσμεύει ένα vector με 5 int και παράγει αυτό το σφάλμα, δοκιμάζοντας να διαβάσει το έκτο (ανύπαρκτο) στοιχείο του vector μας. Μόλις αυτό συμβεί, το out_of_range λάθος «πιάνεται» με την βοήθεια της try{ }catch{ } και παρουσιάζεται στο stdout του χρήστη. > //-Vector "out of range"-exception example (directx)------------------------- #include <iostream> #include <vector> #ifdef __BORLANDC__ #pragma hdrstop #endif //--------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma argsused #endif int main(int argc, char* argv[]) { try { std::vector<int> vecData = std::vector<int>(5); std::cout<<vecData.at(5)<<std::endl; } catch(std::out_of_range) { std::cout<<"We just raised an \"Out_of_range\" exception!"<<std::endl; } return 0; } //--------------------------------------------------------------------------- Συμβαινει το ίδιο και μ'αυτό __stl_throw_out_of_range("basic string");;;;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.