Schrumpfen int-array C

Gerade angefangen C zu lernen und bin dabei auf das folgende Problem:

Brauche ich, um zu schrumpfen, ein integer-array in C, entfernen von Elementen am Ende. Durch das entfernen ich meine Befreiung. Die häufigste Antwort ist, um neuen Speicher für das kleinere array, nach dem kopieren alle Elemente (Elemente entfernen ) des ursprünglichen Arrays in den neu zugewiesenen Speicher, und dann free() des ursprünglichen Arrays.

Weil ich muss sich mit sehr großen arrays, die ich lieber überspringen das kopieren Teil.

Wäre es möglich, erstellen Sie einen Zeiger-variable, die Punkte zu "in der Nähe des Ende des original-array" Größe "Ende array - in der Nähe des Ende", und dann kostenlos die Zeiger?

Vielen Dank im Voraus

  • Sie können schrumpfen mit realloc. Es ist nicht garantiert, aber einige Implementierungen tatsächlich geben Sie wieder die original-Zeiger übergeben, ohne Sie zu kopieren, nichts.
  • Haben Sie sich überlegt mit realloc?
  • Wird realloc auch frei was auch immer Elemente werden gelöscht am Ende? Ich möchte nicht wissen, wie um dies zu testen... danke für die schnelle Antwort, übrigens!
  • Nun, es würde die Größe der Menge an Speicherplatz zugewiesen, was auch immer Sie sagen, es (entweder größer oder kleiner) werde ich Ihnen ein Beispiel unten.
  • Zu Antwort Teil deiner Frage, es ist nicht möglich, für free() zu release Teil eines Speicherblocks, indem ein Zeiger "in der Nähe des Ende". Das würde fast sicher zu einem Absturz führen oder heap-Beschädigung.
  • Kommentar zu den Bearbeiteten Abschnitt: haben Sie richtig malloc ' ed das data-array vor der übergabe an diese Funktion ?
  • "Die Daten (array) in Frage zugeordnet werden, mit "malloc" - ja, sicherlich. Bitte Lesen Sie in der Dokumentation für malloc und realloc.

Schreibe einen Kommentar