Flache Kopie und tiefe Kopie in C

8

Ich habe versucht, dies zu googeln, aber habe nur beanstandete Sprachen als Ergebnis angezeigt.

Nach meinem Verständnis kopiert eine flache Kopie bestimmte Mitglieder einer Struktur.

Also sagen wir, eine Struktur ist

%Vor%

Kopieren des Char ** wäre eine flache Kopie

aber das Kopieren der gesamten verknüpften Liste wäre eine tiefe Kopie?

Habe ich die richtige Idee oder bin ich weit weg? Danke.

    
juice 07.03.2013, 17:49
quelle

2 Antworten

13

Nein. Eine flache Kopie in diesem bestimmten Kontext bedeutet, dass Sie "Referenzen" (Zeiger, was auch immer) auf Objekte kopieren, und der Hintergrundspeicher dieser Referenzen oder Zeiger ist identisch, es ist das gleiche Objekt am selben Speicherort.

Eine tiefe Kopie hingegen bedeutet, dass Sie ein ganzes Objekt (struct) kopieren. Wenn es Mitglieder hat, die flach oder tief kopiert werden können, machen Sie auch eine tiefe Kopie von ihnen. Betrachten Sie das folgende Beispiel:

%Vor%     
user529758 07.03.2013, 17:57
quelle
-1

Der Kopierkonstruktor wird verwendet, um das neue Objekt mit dem zuvor erstellten Objekt derselben Klasse zu initialisieren. Standardmäßig hat der Compiler eine flache Kopie geschrieben. Flache Kopie funktioniert gut, wenn dynamische Speicherzuordnung nicht beteiligt ist, da bei der dynamischen Speicherzuordnung beide Objekte in Richtung auf den gleichen Speicherort in einem Heap zeigen. Um dieses Problem zu entfernen, haben wir daher tiefe Kopie geschrieben, so dass beide Objekte ihre eigene Kopie der Attribute haben in einer Erinnerung. Um die Details mit vollständigen Beispielen und Erklärungen zu lesen, können Sie den Teil dieses Artikels über den Unterschied zwischen Shallow und Deep Copy Constructors sehen .

    
royal52 08.02.2014 13:22
quelle

Tags und Links