Deque;RAM;Fehler ?



  • #include <queue>
    using namespace std;
    
    int main()
    {
    	unsigned int i = -10;
    	deque<int> mydeque;
    	mydeque.resize(i);
    }
    

    Moin,

    Wenn ich den Code ausführe und die Größe vom Deck auf eine Negative Zahl veränder, dann hab ich ein kleines Problem mit dem Ram Speicher.
    Der Speicher ist komplett ausgelastet, Schlussfolgerung ich konnt nichts mehr machen und musste den Pc am Knopf ausschalten -.-".
    Dadurch verlor ich 1 Stunde Programmierarbeit 😡 ...
    Jetzt meine Frage, wieso passiert dass?
    Ich hätte eher erwartet dass ich von Windows eine Fehlermeldung bekomme aber nein so war es nicht.



  • Schau dir mal an wie negative Zahlen binär dargestellt werden. Ein vorzeichenbehaftetes int (dh. int oder signed int) würde -10 intern als binär 1111111111111111111111111110000 dargestellt werden (Zweierkomplement). Wirfst du das in einen unsigned int, wird das ganze nicht mehr als Zahl mit vorzeichen, sondern eben ohne vorzeichen interpretiert. Und das ist dann 4294967286, dh du willst 4294967286 ints haben, was ~15 GB entspricht.



  • Vielen dank für ihre ausführliche Antwort! 😃



  • Ich frage mich gerade wie man auf die Idee kommen kann dass ein unsigned int jemals "eine Negative Zahl" halten könnte... 😕


Anmelden zum Antworten