Le variabili del tipo Vec<[f3; 5]>
sono memorizzate come una matrice contigua (di Vec::len() * 5 * sizeof(f32)
byte) o sono memorizzate come puntatori Vec
?Qual è il layout di memoria di un vettore di array?
6
A
risposta
8
Il contenuto di un Vec<T>
è, indipendentemente da T
, una singola allocazione heap, di self.capacity() * std::mem::size_of::<T>()
byte. (Vec
overallocates -questo è il punto intero di invece di Box<[T]>
-solo è la capacità, non la lunghezza, che contano in questo calcolo.) L'attuale Vec<T>
prende tre parole (24 bytes su un computer a 64 bit).
[f32; 5]
è solo un blocco di memoria contenente cinque numeri a virgola mobile a 32 bit, senza alcun riferimento indiretto; questo arriva a venti byte (quindi std::mem::size_of::<[f32; 5]>() == 20
).
Problemi correlati
- 1. Qual è il costo generale di un vettore vuoto?
- 2. Qual è il tipo dedotto di un vettore di chiusure?
- 3. array di vettori o vettore di array?
- 4. Rotazione di un vettore (array)
- 5. Pulisci il vettore ogni iterazione del ciclo. Qual è il modo più efficiente di memoria?
- 6. qual è la capacità di un vettore vuoto?
- 7. Qual è il modo più semplice per scorrere su un array di array?
- 8. Trovare un vettore all'interno di un vettore
- 9. Qual è l'overhead di memoria di un metodo Java?
- 10. Il vettore è un caso speciale di elenchi collegati?
- 11. Come è il layout di memoria di un programma C/C++?
- 12. Estensione di un array
- 13. struct layout di componenti di memoria
- 14. Il modo più veloce per copiare il contenuto di un vettore in un array?
- 15. Qual è l'intestazione di un array in .NET
- 16. Qual è il valore di None in memoria?
- 17. Matlab: Conversione di un array di doppia vettore di array di celle stringa
- 18. Array bidimensionale con il vettore
- 19. Conversione di un vettore MPL in un array statico
- 20. Inizializzazione di un vettore ublas da un array C
- 21. Qual è la differenza tra il vettore di hashing e il vettore di conteggio, quando devono essere utilizzati?
- 22. Posso spingere un array di int a un vettore C++?
- 23. Nuovo operatore C++ - layout di memoria
- 24. Vettore standard e array di boost: che è più veloce?
- 25. Come posso convertire un vettore in un array di celle?
- 26. Qual è il massimo. lunghezza di un uid di Facebook?
- 27. Layout memoria classe CLR
- 28. Aggiunta di un vettore per un vettore
- 29. layout di memoria della classe ereditata
- 30. Qual è il contrario di Array # reject in ruby?
Grazie. Ma 'Vec>' verrebbe memorizzato come un 'Vec' di puntatori a destra? –
user72961
A 'Vec>' avrebbe una serie di strutture a 3 parole ben impacchettate. Una di quelle parole sarebbe un puntatore. Gli altri due sono la capacità e la lunghezza. –
Shepmaster
Che dire dell'allineamento? Quanto è grande l'heap per 'Vec', 'Vec ' (è uguale alla capacità), 'Vec <(u8, u8)>', 'Vec <[u8; 3]>'? –
ArtemGr