Memory Model
เรื่องนี้อาจจะไม่ต้องรู้ก็ได้ถ้าเขียนแค่ Logic แต่ถ้ารู้ คุณจะเป็นเทพเจ้า Rust และเขียนโค้ดได้เร็วขึ้นแบบก้าวกระโดด!
ลองนึกภาพว่า Memory เป็นตึกสูง Stack คือลิฟต์ที่ขึ้นลงอัตโนมัติ Heap คือห้องเช่าที่เราต้องจองเอง เมื่อเข้าใจแล้ว เราจะเห็น “Matrix” ของโปรแกรมเลยครับ!
1. Stack vs Heap
Section titled “1. Stack vs Heap”1.1 Stack Memory
Section titled “1.1 Stack Memory”fn main() { // ============================================ // Stack = LIFO (Last In, First Out) // เร็วมาก! แค่ขยับ stack pointer // ขนาดต้องรู้ตอน compile // ============================================ let x = 42; // i32 - 4 bytes บน stack let y = 3.14; // f64 - 8 bytes บน stack let arr = [1, 2, 3]; // [i32; 3] - 12 bytes บน stack let flag = true; // bool - 1 byte บน stack
// ============================================ // Function calls สร้าง stack frame // Parameters และ local variables อยู่ใน frame // ============================================ process(x, y);
println!("Stack data: x={}, y={}, arr={:?}", x, y, arr);}
fn process(a: i32, b: f64) { // a, b อยู่บน stack frame ของ function นี้ let local = a as f64 + b; println!("Local: {}", local);}// เมื่อ function จบ stack frame ถูกทำลายทันทีเข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google