delet von array[]



  • Hi,

    ich hab mal ne frage, wie lösche ich ein Array das ich ohne new deklariert habe, z.B:

    char array[] = "Hallo";
    

    mach ich das mit delete[] ??? Ich steh gerade irgendwie auf dem Schlauch.



  • D_Lar schrieb:

    ich hab mal ne frage, wie lösche ich ein Array das ich ohne new deklariert habe, z.B:

    char array[] = "Hallo";
    

    Gar nicht. Das löschst Du genauso wenig, wie andere Variablen auch:

    int i = 99;
    
    void foo() {
      int k = 23;
    }
    

    Hier müssen i und k nicht gelöscht werden. i lebt im statischen Speicher, k im automatischen. i gibt es solange das Programm läuft und ein k gibt es dann nur während foo ausgeführt wird. delete brauchst Du nur, falls Du per new etwas im Freispeicher angelegt hast und es wieder löschen willst.

    Vielleicht ist Dir aber auch nicht klar, was ein Array ist. Ein Array, so, wie Du es definiert hast, ist Speicher-Layout-technisch nicht anders als 6 char-"Variablen", die hintereinander im Speicher liegen -- mit dem Unterschied, dass sie keine eigene Namen haben, dafür aber über array[index] erreichbar sind. Was 'array' hier nicht ist: Ein Zeiger. Du kannst den ID-Ausdruck zwar als Zeigers behandeln, das liegt dann aber an der "array-to-pointer standard conversion". Ein Array ist genauso wenig ein Zeiger wie 3.0 eine Ganzzahl ist. Trotzdem kannst Du folgendes schreiben:

    int z = 3.0; // Implizite Konvertierung von double->int
    


  • Hey danke Krümelkacker, 🙂

    das hat mich schon ne ganze Weile interesiert. Danke für die schnelle Antwort. 👍



  • Vielleicht noch Stichwort: RAII



  • EOutOfResources schrieb:

    Vielleicht noch Stichwort: RAII

    😕 Was hat RAII damit zu tun?



  • inter2k3 schrieb:

    EOutOfResources schrieb:

    Vielleicht noch Stichwort: RAII

    😕 Was hat RAII damit zu tun?

    Nichts. 😃



  • inter2k3 schrieb:

    😕 Was hat RAII damit zu tun?

    Alles und gar nichts. :p



  • krümelkacker schrieb:

    Das löschst Du genauso wenig, wie andere Variablen auch

    Eben, RAII.



  • Eben... nicht RAII?



  • Er hat doch nur ein Stichwort bringen wollen... lasst ihn doch.



  • Finde es aber auch total unpassend 😋
    Der Threadersteller sollte sich glaub ich erst mal mit den Grundlagen beschäftigen, bevor er sich mit RAII beschäftigt( Threadersteller, ist nicht böse gemeint;-) )

    Lg freeeG



  • RAII ist doch Grundlage. Nur nicht so grundlegend wie delete[] vielleicht. Andererseits vielleicht schon. Heap-Speicherverwaltung nach Klassenverwendung einzuführen, finde ich eigentlich ganz chic, oder? Man muss ja nicht erst C erklären und dann C++, dann impliziert man auch nicht, dass so designed werden muss.



  • RAII macht aber häufig von delete bzw. delete[] gebrauch und kann einen einiges ersparen, insofern ist es gar nicht so unpassend, wie man vielleicht denkt. Tatsächlich mag es noch etwas früh für den OP sein, in Zukunft sollte man darauf aber definitiv zurückkommen.


Anmelden zum Antworten