Immer mehr private bytes :(



  • Hey!

    Ist es möglich, diesem vector

    struct sJoinedPlayer
    	{
    		std::string ip;
    		std::string id;
    	}; std::vector<sJoinedPlayer> joinedPlayer;
    

    ip und id separat zu speichern? Ich müsste ja eine Struktur pushen...

    MfG



  • Hallo

    der Vector hat als Elementtyp die Struktur, also must auch immer als Wert eine Instanz der Struktur hinzufügen. Etwas anderes geht nicht.

    bis bald
    akari



  • Hihi, hab doch eh schon alles geschrieben, musst bloss lesen und machen. So halt, is ja net so schwer zu checken:

    void Foo::Moo()
    {
        joinedPlayer temp; // hier: joinedPlayer=Typname
        std::fill(&joinedPlayer[0], &joinedPlayer[sizeof(this->joinedPlayer)/sizeof(this->joinedPlayer[0])], temp); // hier: joinedPlayer=Name des Members
        // ferdich
    }
    

    Oder eben wie gesagt nen std::vector<joinedPlayer> verwenden was das einfachste und beste wäre. Blubb 🙂

    Und du solltest deine Member nicht gleich wie deine Typen nennen. Das verwirrt.

    Du kannst ein Objekt nicht genauso nennen wie eine Klasse

    Wohl, das geht (leider *würg*).
    Sowas...

    struct T{ int i; };
    
    void Sepp()
    {
    	T T;
    	T.i = 0;
    }
    

    ...compiliert und läuft ohne Fehler. Wird halt lästig bei sizeof wenn "T" ein "T[100]" ist. Was ist dann "sizeof(T)"? 😃



  • Hey!

    Also, jetzt habe ich alles belassen, jedoch statt memset nun für jedes Objekt Clear() aufgerufen. (ip = "";, id = "";)

    Es wird trotzdem immer mehr Speicher verbraucht ...



  • Das Problem ist ja, es waren nun in einer Stunde maximal 10 Spieler im Server, daher sind auch nur maximal 10 ID's und IP's gespeichert worden. Ich habe doch nur 3 Arrays, wie kann das so viel Speicher nehmen??



  • Du hast nirgens gezeigt was mit dem Objekt passiert. Das ganze rumdocktorn an der der gezeigten Klasse sind IMHO sinnlos. Ich sehe die warscheinlichkeit des Speicherverbrauches im Umfeld für viel größer.

    Lediglich eine kurze Main wurde aufgezeigt, die eine Instanz der Klasse zeigt. Aber nicht , wie z.b. die IP und Spielernamen in das Objekt kommen.

    Auch habe ich vermutlich überlesen, wie denn festgestellt wird, das der Prozess zunehmend speicher benötigt.



  • Hey!

    🙄 Hatte die alte Datei gestartet...

    Nun scheint es konstant bei 628K zu bleiben 😋



  • Dieser thread ist total scheisse. 70 Seiten und ich hätte nur memset nicht verwenden dürfen...

    Wollt ihr den nicht löschen 😃



  • Ach, eins interessiert mich noch. Warum wurde so viel Speicher gefressen? Weil undefinierte Speicherstellen mit 0 vollgeschrieben wurden? Oder leert memset mit 0 komplett?

    MfG



  • Naja, wie soll denn der std::string den Speicher wieder freigeben den er für den eigentlichen String (den "Inhalt") alloziert hat wenn du den Pointer auf diesen Speicher (der Teil des std::string Objektes ist) einfach mit memset mit Nullbytes überschrieben hast? Kann ja wohl nicht gehen...



  • hustbaer schrieb:

    OK, Freund der Blasmusik & Gartenzwerge. Ich hab deinen Fehler gefunden. Bekomm ich jetzt ein Bier? Naja, egal. Du kannst nicht einfach eine Klasse oder Struct die ein std::string als Member hat mittels memset "löschen" und dann erwarten dass noch irgendwas geht. Und natürlich kannst du das auch nicht mit einem oder mehreren Arrays von Elementen so einer Klasse machen (struct oldJoinedPlayer und so, ring a bell?). Es ist fast schon ein Wunder dass das Programm dabei nicht abschmiert.

    Ich wür'd dir gern nen Kasten spendieren! 👍
    Wäre ja gern auf alles selbst draufgekommen, nur hatte ich ned genug Zeit. Schäme mich jedenfalls 🙄



  • Hihi. Ich mag ja eigentlich garkein Bier 😉



  • I au ned 🙂

    Gibts jetzt ne Möglichkeit den thread zu löschen? 😮

    MfG



  • Hello schrieb:

    I au ned 🙂

    Gibts jetzt ne Möglichkeit den thread zu löschen? 😮

    MfG

    Einfach nicht mehr posten würde helfen, dann verschwindet er auf die nächste Seite.


Anmelden zum Antworten