std::list Problem



  • Hallo 🙂

    Ich habe ein Programm unter windows in c++ geschrieben welches ich in den letzten Tagen am portieren für Linux bin...
    (Ich hätt nie gedacht dass das soviele Probleme macht =), aber die meisten hab ich schon gelöst)
    Hier jetzt ein Problem das ich einfach nicht gelöst bekomme....

    Ich gebe mal die relevanten codezeilen wieder...

    using namespace std;
    
    class class_STATIC_Item
        {
        public:
        unsigned short objtype;
        unsigned char x, y;
        char z;
        unsigned short color;
        };
    
    cout << "vorher " << flush;
    list<class_STATIC_Item> c_Staidx[393216];
    cout << "nachher" << flush;
    

    unter windows läuft das so wie hier in das gesamtprojekt eingebaut tadellos...
    er schreibt auch vorher nachher

    unter linux bleibt er mir in der vorletzten zeile einfach stehen und fährt die systemlast auf 99% er schreibt natürlich nur vorher

    Hat jemand ne idee woran das liegen kann ?

    ich habs auch schon mal testweise mit nem pointer array probiert...
    list<class_STATIC_Item> *c_Staidx[393216];
    dann kmmt er unter linux weiter... aber dann stimmen die zugriffe auf die liste nimmer...

    aus c_Staidx[i].pushback( ... ) muss ich dann c_Staidx[i]->pushback( ... ) machen... ist ja logo...
    aber er schmiert mir dann mit Speicherfehler unter windows schon weg...

    ich hoffe man kann verstehen was ich meine 🙂

    mfg

    Death



  • hmm... könnte auch sein dass dieser Beitrag ins aandere Compiler Forum gehört... bin da jetzt ned so ganz sicher 🙂



  • Hi,

    Also ohne jetz mal ne konkrete Antwort zu haben, interessiert mich wofür du die massen an Listen brauchst. 😮



  • Jupp, das ist echt ner Erklärung würdig 🙂

    diese liste beschreibt im Prinzip ne landkarte....
    Die ist 6144 * 4096 felder gross 🙂



  • Ahhhh ok.



  • grr falsches fenster geklickt 🙂

    die landkarte unterteilt sich dabei in 8x8 felder grosse blöcke...
    das macht 6144 / 8 = 768 Felder für die breite
    und 4096 / 8 = 512 Felder für die Höhe
    macht also 768 * 512 = 393216 Blöcke 🙂

    jeder block kann 0-n elemente beinhalten ...
    das sind gegenstände die sich auf der landkarte befinden...

    hoffe das ist verständlich 🙂

    mfg

    Death



  • Hi,

    Hmm also ich hab das eben mal kurz auf nem OpenBSD kompiliert. Eigentlich sollte es egal sein auf welchem System es kompiliert wird. Es handelt sich ja um standart C++. Bei mir wird es ohne Probleme ausgeführt und beide Ausgaben sind zu sehen. Ich hab allerdings auch wirklich nur das was nötig ist geschrieben. Bei dir ist ja noch ne Menge an Program drum rum nehm ich an.
    Ist mir im Moment ein Rätsel was da falsch läuft.



  • hmmm ich hab das jetzt auch mal probiert...

    einzeln klappt es auch unter linux...

    d.h. der fehler muss im zusammenwirken mit etwas anderem entstehen...

    *grrr* Ich mag nimmer 🙂

    aber erstmal vielen dank... bin jetzt schonmal soweit dass ich wieder nimmer weiss wo der fehler ist 🙂

    mfg

    Death


Anmelden zum Antworten