2015-04-12 14 views
24

La documentazione dice usize èQual è la differenza tra `usize` e` u32`?

Operazioni e le costanti per interi senza segno puntatore dimensioni.

Nella maggior parte dei casi, posso sostituire usize con u32 e non succede nulla. Quindi non capisco perché abbiamo bisogno di due tipi che sono così simili.

risposta

51

Come afferma la documentazione, usize ha dimensioni di puntatore, quindi le sue dimensioni effettive dipendono dall'architettura per la quale si sta compilando il programma.

Ad esempio, su un computer x86 a 32 bit, usize = u32, mentre su computer x86_64, usize = u64.

usize offre la garanzia di essere sempre abbastanza grande da contenere qualsiasi puntatore o qualsiasi offset in una struttura dati, mentre u32 può essere troppo piccolo su alcune architetture.

+1

Devo utilizzare sempre il tipo 'usize' per sicurezza? – Vayn

+5

Dipende da cosa si vuole fare, tenendo gli indici in una struttura di memoria, sì. Per i numeri semplici, 'u32' è spesso buono. La libreria standard usa sempre 'usize' quando appropriato, e ruggine non convertirà silenziosamente un' u32' in un 'usize', quindi vedrai quando sono necessari. – Levans

Problemi correlati