안녕하세요! 드디어 메모리라는 흥미진진한 세계에 오신 것을 환영합니다. 지금까지 코드를 짜면서 "데이터가 어디에 저장될까?"라는 궁금증이 생기지 않으셨나요?
컴퓨터는 데이터를 저장할 때 크게 두 가지 공간을 사용해요. 바로 **스택(Stack)**과 **힙(Heap)**입니다. 이 둘의 차이를 아주 쉬운 비유로 알아볼게요!
---
힙은 아주 넓고 빈자리가 많은 **'거대한 물류 창고'**와 같아요.
러스트에서 내용이 길어질 수 있는 글자 묶음(`String`)이나 목록(`Vec`) 같은 것들은 이 힙 공간을 빌려서 사용(할당, Allocation)하게 됩니다.
---
백문이 불여일견! 짧은 코드로 어떤 것이 스택에 가고, 어떤 것이 힙을 사용하는지 살펴볼까요?
fn main() {
// 1. 스택에 저장되는 값
let x = 10; // 크기가 정해진 정수는 스택(Stack)에 바로 저장돼요.
// 2. 힙을 사용하는 값
let s = String::from("Hello"); // "Hello"라는 글자는 힙(Heap)에 저장되고,
// s는 그 글자가 어디 있는지 알려주는 '주소록'만 스택에 가집니다.
} // 함수가 끝나면 스택에 쌓였던 x와 s의 주소록이 순식간에 사라져요! 참 깔끔하죠?
---
러스트는 여러분이 메모리를 일일이 청소하지 않아도 되도록 도와주는 아주 똑똑한 언어예요. 하지만 **"스택은 빠르고 규칙적이고, 힙은 크고 자유롭다"**는 개념을 알고 있으면, 나중에 배울 '소유권(Ownership, 데이터의 주인 정하기)'이라는 핵심 개념을 훨씬 쉽게 이해할 수 있답니다.
처음에는 조금 낯설 수 있지만, "스택은 책상 위, 힙은 큰 창고!" 이것만 기억하세요. 여러분은 이미 훌륭한 프로그래머의 길을 걷고 계십니다.
| 39. Rust의 심장: 소유권이란? (0) | 2026.09.01 |
|---|---|
| 37. if let으로 코드 단순화하기 (0) | 2026.08.21 |
| 36. 패턴 매칭의 즐거움 (0) | 2026.08.21 |
| 35. 매치(match) 연산자 기초 (0) | 2026.08.21 |
| 34. 반복문 탈출과 계속하기 (0) | 2026.08.21 |