Problem mit globalen array



  • guten abend. Ich habe da ein problem wo ich einfach nicht weiterkommen. Und zwar erstelle ich in einem fenster ein dynamisches 2d array. Fühle es dann mit werten und werte es dann aus. Danach schließe ich das fenster und öffne das zweite. Im zweiten müßte ich dann auch weider mit dem array arbeiten doch das geht ja leider nicht denn nachdem ich das erste fenster geschlosse haben sind die array futsch. Ich habe es schon versucht in der header datei der hauptform zu erstellen doch das geht leider nicht. denn der compiler will von mir nur konstante werte. Kann mir jemand vieleicht sagen wie ich das sonst lösen kann.
    Hier noch mein array wie es aussieht:

    int **syszahl;
      syszahl = new int*[FormHauptmenu->Reihenanzahl];
      for(int i=0;i<FormHauptmenu->Reihenanzahl;i++)syszahl[i] = new int[6];
    


  • Hallo,

    also bei Deinem Konstrukt wünsche ich Dir viel Spaß beim Aufräumen des Heaps!
    😮

    Nimm doch Templates z.Bsp. den vector-Container, da hast Du nicht so viel Ärger mit den Speicherlecks.

    Außerdem , global ist hier sowieso der falsche Weg.
    Und wenn es unbedingt sein muß , benutze die Singleton Klasse von Scott Meyers.

    Grüße
    epidemic



  • Hallo, vielen dank für die hilfe. Aber ich bin noch ziemlich unreif in sachen programmieren. Kannst du mir vieleicht mehr zum vector sage und zu scott meyer. Was meinst du bitte mir aufräumen der heaps.



  • Regel nummer 1: Was mit new erzeugt wird, muss irgendwann mit delete wieder gelöscht werden.

    Scott Meyers ist ein bekannter Autor der hauptsächlich 2 Interessante und wichtige Bücher für die C++-programmierung geschrieben hat:
    Effektiv C++ programmieren | ISBN: 3827313058
    Effektiv C++ Programmieren und
    Mehr effektiv C++ programmieren | ISBN: 3827312752
    Mehr Effektiv C++ Programmieren.

    -junix



  • Hi Black Dragon,

    hier ein Link, wo Du, ein paar meiner Meinung nach gute Büchertipps findest.
    http://www.cplusplus-gate.de/links.php

    Die von Junix vorgeschlagenen Bücher würde ich Dir allerdings erst für
    später empfehlen, da die mehr auf Programmierstill als auf Grundlagen eingehen.

    Grüße

    epidemic



  • epidemic schrieb:

    Die von Junix vorgeschlagenen Bücher [...]

    Wie jetzt? Die hast du doch vorgeschlagen? (o;

    -junix



  • hallo,

    @junix: "Was mit new erzeugt wird, muss irgendwann mit delete wieder gelöscht werden."

    Eine Ausnahme von dieser Regel:
    was aber nicht auf dynamisch erstellte VCL-Steuerelemente gilt, denen im konstruktor als owner die TForm übergeben wurde, denn wenn der owner ein Form ist kümmert die sich um die freigabe...

    mfg
    murph



  • murphy schrieb:

    @junix: "Was mit new erzeugt wird, muss irgendwann mit delete wieder gelöscht werden."

    Eine Ausnahme von dieser Regel:
    was aber nicht auf dynamisch erstellte VCL-Steuerelemente gilt, denen im konstruktor als owner die TForm übergeben wurde, denn wenn der owner ein Form ist kümmert die sich um die freigabe...

    Da sehe ich keinen Widerspruch zu junix' Behauptung. Er hat ja nicht gesagt, wer sich um
    das Löschen kümmern muß...

    Gruß,

    Alexander



  • Hallo, dann danke ich erstmal. ich versuche es mal nachzulesen und auf vectoren umzusteigen. Doch eins muß ich sagen. Meine arrays laufen super. Nur mich stört halt dass ich diese nicht global haben kann. Ich brauche halt von jeder form den zugriff aus dieses array. Gibt es da keine lösung?



  • Das Tutorial zu der Methode die ich dir in diesem Thread vorgeschlagen hatte, würde deine Frage glaube ich beantworten (o; Da ich mal vermute, dass es um die Selbe Applikation auch hier geht, empfehle ich dringenst, den in oben genanntem Thread von mir gemachten Vorschlag mal genauer zu überdenken.

    -junix



  • BlackDragon schrieb:

    Meine arrays laufen super

    Mag auch sein.

    Hast das auch anschl. den Code auf Memory Leaks getestet z.Bsp. über den Code Guard?

    Dem Junix gebe ich natürlich Recht.
    Das Doc/View Modell wie dies auch bei den MFC praktiziert wird, ist
    auf jeden Fall der Grundstein für einen sauberen Code, jedenfalls in Verbindung mit diesem Problem.

    außerdem solllte man Zeiger und vor allem solche Konstrukte wie Zeiger auf Zeiger oder noch weiter.. nach Möglichkeit meiden(Stroustrup).

    epidemic


Anmelden zum Antworten