Int Array kopieren



  • Wenn ich auf der niedrigsten Stufe von C ein int[] kopieren will, wiel vielleicht ein 21. von 20 Elementen plaziert werden soll, kann dies eine Methode machen?
    Wenn eine Methode ein Objektarray erweitern soll, in dem die Methode ein lokales Array erzeugt, mit einer größeren anzahl an Elementen, als vorher , kopiert die Menge der Elemente des alten Arrays da rein, fügt ein neues element und verweist dann den Pointer des Objektarrays auf dieses Array.
    Funktioniert das? Oder macht es in dem Fall einen Unterschied, ob das Array statisch oder dynamisch angelegt wurde?
    Mir gehts wieder um die Frage, wie verhindert man, dass bei sowas der lokale Pointer, samt Inhalt gelöscht wird. Doch eigentlich nur durch Speicher mit new belegen, nicht wahr?

    (Es geht nicht um dynamische Listen, Vector usw.)



  • Kannst du das bitte noch einmal formulieren? Ich weiß nicht, was du wissen willst.



  • Wie krieg ich ein Int Array von 10 Elementen auf 12 erweitert, so dass nach dem verlassen der Methode der Speicher nicht gelöscht wird 🙂



  • Ein Array? Garnicht. Dafür gibts in C++ Listen und so und in C Pointer und realloc().



  • Echt garnicht? Komisch, bei mir klappts mit new int[], kann natürlich irgendwo undefined sein, aber das merk ich ja nicht *grmpf*



  • Du musst das Array erst löschen (delete[]) und dann neu allozieren (new[...]). Dabei wird das Array nicht direkt erweitert. Du löscht erst das erste und erzeugst dann ein neues.

    P.S.: Das ist nicht undefiniert. Du darfst nur nicht vergessen das alte Array zu löschen da sonst Memory-Leaks entstehen.

    Gruß
    Don06



  • Oh, richtig! das hab ich vergessen



  • Also eigentlich macht man erst ein Neues, und löscht danach erst das Alte.
    Sonst tut man sich mit dem Kopieren des Inhalts so schwer... 😉


Anmelden zum Antworten