habe folgendes Programm aus Praktische c++ programmierung von steve oualline abgetippselt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | /********************************************************************* * Stack * * Eine einfache Stack-Klasse * ********************************************************************/ #include <cstdlib> #include <iostream> #include <cassert> const int STACK_SIZE = 100; // maximale Größe des Stacks /********************************************************************* * bound_err -- eine Klasse für eine Ausnahme bei * * Bereichsüberschreitungen * ********************************************************************/ class bound_err{ public: const std::string what; // Was hat den Fehler verursacht // Initialisiere den Bereichsfehler mit einer Meldung bound_err(const std::string& i_what): what(i_what) {} // Default-Zuweisungsoperator // bound_err(bound_err) -- Default-Copy-Konstruktor // ~bound_err() -- Default Destructor }; /********************************************************************* * Stack-Klasse * * * * Member-Funktionen * * init -- Iinitialisiere den Stack * * push -- legt ein Element auf den Stack * * pop -- entfernt ein Element vom Stack * ********************************************************************/ // Der Stack selbst class stack{ private: int count; // Anzahl der Elemente auf dem Stack int data[STACK_SIZE]; // Die Elemente selbst public: // Den Stack initialisieren stack(): count(0) {}; // Copy-Konstruktor-Defaults // Zuweisungsoperator-Defaults // Ein Element auf den Stack legen void push(const int item) throw(bound_err); // Ein Element vom Stack holen int pop() throw(bound_err); }; /********************************************************************* * stack::push -- ein Element auf den Stack legen * * * * Warnung: Wir fangen keine Überläufe ab * * * * Parameter * * item -- Element das auf den Stack gelegt wird * ********************************************************************/ inline void stack::push(const int item) throw(bound_err){ if((count < 0) && (count >= sizeof(data)/sizeof(data[0]))){ throw("Push overflows stack"); } data[count] = item; ++count; } /********************************************************************* * stack::pop -- ein Element vom Stack holen * * * * Warnung: Wir fangen keine Überläufe ab * * * * Rückgabewert * * Das oberste Element vom Stack * ********************************************************************/ inline int stack::pop() throw(bound_err){ // Stack um ein herunterzählen (decrementieren) --count; if((count < 0) && (count >= sizeof(data)/sizeof(data[0]))){ throw("Pop underflows Stack"); } // Dann den obersten Wert zurückgeben return(data[count]); } static stack test_stack; // Ein Stack, um die Grenzen auszutesten /********************************************************************* * push_a_lot -- zu viel auf den Stack legen * ********************************************************************/ static void push_a_lot(){ int i; // push-zähler for(i = 0; i < 5000; ++i){ test_stack.push(i); } } int main() { try { push_a_lot(); } catch(bound_err& err) { std::cerr << "Fehler, Grenzen überschritten\n"; std::cerr << "Reason: " << err.what << '\n'; exit(8); } catch(...) { std::cerr << "Fehler: unterwartete Ausnahme aufgetreten\n"; exit(7); } return 0; } |
copilierung hat so weit funktioniert....
aber ich habe diese Fehlermeldung sehr oft, und würde mich freuen wenn ich mir den "Speicherabzug" irgendwie ansehen könnte. Kann mir jemand sagen wie, oder wo ich den finden könnte. Da ich nicht weiss wie der heisst bringt auch find... nicht viel und mit ls -a bekomm ich auch kein file zu sehen das ich nicht selbst hingeschrieben habe...
Moderiert von tomtomtom:
Weder "Vor der Installation" noch "grundlegende Frage". Verschoben.