Stavo leggendo un blog di recente che ha fatto un grosso problema sul fatto che i dati dell'array vengano memorizzati in modo contiguo (in particolare in Go), ma ho capito che, per definizione, i dati dell'array sono archiviati in modo contiguo. Almeno questo è ciò che tutti i miei algoritmi e strutture dati studiano mi hanno portato a credere.Gli array sono memorizzati in modo contiguo in tutte le lingue?
Quindi la mia domanda è: i dati dell'array sono memorizzati in modo contiguo in tutti i linguaggi di programmazione? E, in particolare, voglio parlare di primitive come gli interi (o nel caso di Java dove posso avere una matrice di oggetti, sono i riferimenti agli oggetti memorizzati in modo contiguo nella memoria? So che gli oggetti stessi possono essere ovunque).
per Java è già presente una risposta https://stackoverflow.com/questions/10224888/java-are-1-d-arrays-always-contiguous-in-memory – DRC
Per Java non esiste alcuna regola per l'archiviazione degli elementi dell'array in modo contiguo o in un ordine particolare, purché si verifichino i comportamenti specificati. I linguaggi C in genere richiedono un ordine contiguo per gli array a dimensione singola in modo da garantire la semantica del puntatore. Probabilmente esistono diversi linguaggi che utilizzano un meccanismo di tipo "ArrayList" per gli array, e gli array possono essere costruiti da più blocchi non contigui. –
Molte specifiche del linguaggio considerano questo dettaglio dell'implementazione (cos'è la memoria?) E non lo garantiscono, ma di solito è il caso delle implementazioni effettive. – zch