[[Rust]] [[To put data on the heap use a Box]] --- Each function has a frame consisting of variables. Those frames live on the stack. A frame is **deallocated when the function returns**. If we assign a variable such as ```rust let a = [0; 1_000_000]; let b = a; ``` the value of a is **copied** to b (thus we get two huge arrays). This is **expensive**. Think about what happens when we call a function.