The Stack vs The Heap
-
์คํ: ์ง์ญ๋ณ์๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์ ์ฐ์์ ์ธ ์์ญ
- ๊ฐ์ ์ฌ์ ์ ์๋ ๊ณ ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ต๋๋ค.
- ๊ทน๋๋ก ๋น ๋ฆ: ๋จ์ง ์คํ ํฌ์ธํธ๋ง ์ด๋๋ฉ๋๋ค.
- ๊ด๋ฆฌ๊ฐ ์ฌ์: ํจ์ ํธ์ถ์ ๋ฐ๋ฆ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ธ์ ์ฑ
-
ํ: ํจ์ ํธ์ถ ์ธ๋ถ์ ๊ฐ์ด ์ ์ฅ๋๋ ๊ณณ
- ๊ฐ์ ๋ฐํ์ ์ ๊ฒฐ์ ๋๋ ๋์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ต๋๋ค.
- ์คํ์ ๋นํด์๋ ์ฝ๊ฐ ๋๋ฆผ: ์ฝ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ก(๋ถ๊ธฐ)1์ด ํ์ํจ.
- ๋ฉ๋ชจ๋ฆฌ ์ธ์ ์ฑ์ ๋ณด์ฅํ์ง ์์.
Stack: Continuous area of memory for local variables.
- Values have fixed sizes known at compile time.
- Extremely fast: just move a stack pointer.
- Easy to manage: follows function calls.
- Great memory locality.
Heap: Storage of values outside of function calls.
- Values have dynamic sizes determined at runtime.
- Slightly slower than the stack: some book-keeping needed.
- No guarantee of memory locality.
์ญ์ฃผ
1
book-keeping(๋ถ๊ธฐ)๋ ํ๊ณ์ชฝ ์ฉ์ด์ด๊ณ ์ด๋ ํ ์ฌ๊ฑด์ ๋ํด ์์ฝ, ์ ๋ฆฌํด์ ๋ณ๋์ ์ฅ๋ถ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ ์ ์ฅํ๊ณ ํด๋น ํ ์ฃผ์๋ฅผ ์คํ์ ์ ์ฅํ๋ ํํ์ ๋ํ ์ค๋ช ์ ๋๋ค.