Zum Inhalt springen

Box

fn main() {
let mut n = 1;
let b = Box::new(&mut n);
**b += 1;
println!("{}", n);
}

Eine Box kann eine mutable Referenz enthalten, daher führt das zweimalige Dereferenzieren von b zurück zu n.


Angenommen, wir haben ein Programm mit einer Variablen:

let x: [Box<(usize, usize)>; 4] = /* ... */;

Für ein Kompilierungsziel mit einer 64-Bit-Architektur, wie groß ist die minimal mögliche Speichergröße (in Bytes) von x auf dem Stack? Geben Sie Ihre Antwort in Ziffern an, z.B. 0, 1, usw.

Eine Box enthält einen Pointer, der auf einer 64-Bit-Architektur 8 Bytes groß ist. Ein Array von 4 Pointern ist daher mindestens 4 * 8 = 32 Bytes groß.