title: Copia di un oggetto
text: # Copia di un oggetto
  
  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
  
  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.
  
  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
  
  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
  
  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.
  
  