La Copia di un oggetto è l'azione, in programmazione informatica, dove un oggetto ha i suoi attributi copiati in un altro oggetto dello stesso tipo di dato. Un oggetto è un tipo di dato composito nei linguaggi di programmazione a oggetti. La copia dei dati è una delle più comuni procedure che ricorrono nei programmi per computer. Un oggetto può essere copiato per riutilizzare tutti o parte dei suoi dati in un nuovo contesto.
Copia per indirizzo o Shallow copy
[modifica | modifica wikitesto]In questo processo, B è allegato allo stesso blocco di memoria di A. Questo metodo è conosciuto anche come copia per indirizzo.
Questo accade in una situazione in cui gli stessi dati sono condivisi tra A e B, così modificando il primo verrà alterato l'altro. Il blocco di memoria originale di B ora non fa più riferimento a nulla.[ Contestualizzare, chiarire o rimuovere.]
Se il linguaggio di programmazione non ha un garbage collector, il blocco originale di memoria di B è probabilmente in memory leak.
Il vantaggio della copia per indirizzo è la sua velocità d'esecuzione è rapida e non dipende dalla grandezza del dato.
Le copie bitwise di oggetti che non son composti da blocchi monolitici sono copie per indirizzo.
Copia in profondità o Deep copy
[modifica | modifica wikitesto]La Deep Copy consiste in una reale copia dell'oggetto. Il vantaggio è che A e B non dipendono fra di loro ma c'è un alto costo in termini di velocità.
Copia pigra o Lazy copy
[modifica | modifica wikitesto]La copia pigra è una combinazione di entrambe le strategie precedenti. Quando inizialmente copia un oggetto viene usata la copia per indirizzo. Un contatore A è usato per tracciare quanti oggetti condividono il dato. Quando il programma vuole modificare l'oggetto, può determinare se il dato è condiviso (esaminando il contatore) e può fare una deep copy se necessario.
La Lazy copy sembra una Deep Copy, ma ha anche i vantaggi di velocità della copia per indirizzo quando è possibile. In alcuni situazioni di riferimenti circolari può causare problemi.
La Lazy copy è correlata alla copy-on-write.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Copia di un oggetto in C++, su fredosaurus.com. URL consultato il 19 febbraio 2012 (archiviato dall'url originale il 10 febbraio 2014).
- (EN) Copia di un oggetto in Python, su docs.python.org.