Dynamische Speicherverwaltung-Deklaration

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Dynamische Speicherverwaltung-Deklaration

    Hallo,

    ich habe zwei Klassen deklariert. In der zweiten Klasse (Y) will ich dynamisch eine Variable „dynam“ aus der ersten Klasse (X) deklarieren. Leider funktioniert das, was ich gemacht habe, nicht. Es müssen zwei Parameter übergeben werden. Die zweite Deklaration funktioniert ebenfalls nicht. Kann mir jemand helfen???

    Quellcode

    1. class X{};
    2. class Y {
    3. private:
    4. int A;
    5. public:
    6. X* dynam;
    7. int **a;
    8. Y(int T, int M) {
    9. dynam = new X[A]; //????
    10. a = new int*[T,M]; //???? }
    11. ~Y() {
    12. delete dynam;
    13. delete a;
    14. }
    15. };
    Alles anzeigen


    Maria
  • dynam = new X[A]; //????

    kann nicht funktionieren, weil der Variablen A noch kein Wert zugewiesen wurde und in diesem Fall bei Visual C++ der Wert 0xcccccccc ist - damit wird versucht 12.8 GB zu allokieren - das muss schief gehen :)


    a = new int*[T,M];

    kann so auch nicht funktionieren, da "a" ein "Pointer" auf einen "Pointer" vom Typ "int" ist. Du willst wahrscheinlich

    a = new int*[T * M];

    schreiben.

    Außerdem solltest du im Destruktor

    delete [] dynam;
    delete [] a;

    schreiben, da es sich um Arrays handelt.


    Um weils so schön war: bitte keine public Variablen; Variablen immer mit einem Kleinbuchstaben beginnen lassen und aussagekräftige Namen vergeben.

    Und wenn du dir nicht sicher bist, wo der Destruktor virtual sein muss und wo nicht, empfehle ich ihn immer virtual zu machen (ist in diesem speziellen Fall aber nicht notwendig)

    hth