Zugriff auf mehrere dyn. Arrays in verschiedenen TForm Objekten



  • Hallo,

    habe ein Problem mit der Speicherverwaltung von meinen dynamisch erzeugten Arrays. Das Prog besteht aus einem MainForm und innerhalb dieses kann man dann mehrere MDIChilds Formen erstellen, welche die Werte der erzeugten 2D-Arrays graphisch als TImage darstellen.

    Hier meine zwei (bzw wahrscheinlich doch nur eins) Probleme:

    1. Beim umschalten zwischen den MDIChilds bekomme ich über das Ereigniss OnMauseDown nur den Wert vom zuletzt erstellten TImage (bzw. dessen Array-Wert)

    2. Beim schließen einer MDIChild Form bekomme ich beim ersten schließen den Speicher frei, beim zweitenmal gibt es aber eine Fehlermeldung. Sprich der Destruktor zeigt auf die gleichen Resourcen, die vorher schon freigegeben wurden, weil die ganzen dyn Arrays anscheinend immer auf den gleichen Speicherplatz zeigen.

    Lange Rede kurzer Sinn. Gibt es eine Möglichkeit quasi einen Zähler für seine dynamisch erzeugten Arrays zu genererieren um dadurch zu gewährleisten, das man zu jedem erzeugtem MDIChild Form auch das richtige Array zuweisen kann ??

    Hier mal die einfache dyn. Speicherbeschaffung/-freigabe und da fehlt halt noch irgendein Zähler drinnen.

    unsigned char **bmatrix(short nrh, short nch)
    {
    matrixb = new unsigned char *[nrh];
    for (i = 0; i < nrh; i++)
      {
        matrixb[i] = new unsigned char[nch];
        }
      return matrixb;
    }
    
    void free_bmatrix(short nrh)
    {
    
    for (short i = 0; i < nrh; i++)
       delete [] matrixb[i];
    delete [] matrixb;
        fclose(dateidhm);
    
    }
    

    Sorry falls das ganze im falschen Forum gelandet ist. Weiß nicht ob's beim C++ Forum besser aufgehoben ist, derweilen hat ja viel mit TForm und TImage usw zu tun. Außerdem bin ich noch Anfänger 🙂

    MFG

    Marc


Anmelden zum Antworten