[D+09] μ»΄ν¨ν°μμ λ©λͺ¨λ¦¬λ₯Ό μ΄λ»κ² μ¬μ©νλκ°?
Algorithm
- μ»΄ν¨ν°μμ λ©λͺ¨λ¦¬λ₯Ό μ΄λ»κ² μ¬μ©νλκ°? -
μ»΄ν¨ν°μμ λ©λͺ¨λ¦¬λ₯Ό μ΄λ»κ² μ¬μ©νλκ°?
• νλ‘μΈμ€ λ©λͺ¨λ¦¬λ§΅
- μΌλ°μ μΈ μ΄μ체μ κ° νλ‘μΈμ€λ₯Ό λ©λͺ¨λ¦¬μ ν λΉνλ ꡬ쑰
- νλ‘μΈμ€λ₯Ό λ©λͺ¨λ¦¬μ ν λΉνλ λ°©μμ΄ κ° μ΄μ체μ λ§λ€ λ€λ¦.
μ΄μ체μ λ μΌμ’ μ ꡬλΆκ΅¬λΆν κΈΈμ ννν μμ μ κ±°μ³ νννκ² λ§λ€μ΄μ£Όλ μν μ νλ€κ³ ν μ μλ€.
• λ©λͺ¨λ¦¬μ ꡬ쑰
λ©λͺ¨λ¦¬μ ꡬ쑰λ ν¬κ² μΈκ°μ§λ‘ ꡬλΆν μ μλλ° λ°λ‘ κΈλ‘λ²μμ, νμμ, μ€νμμμ΄λ€.
μΈκ°μ§λ‘ λλμμμ κ° νλ‘μΈμ€λ νΉμ±μ λ§κ² κ°μμμΌλ‘ λλ μ λ€μ΄κ°κ² λλ€.
• λ©λͺ¨λ¦¬ ꡬ쑰 - Stack μμ
- μ€νμ΄λ λμ λ§€λλμ¦μΌλ‘ λμλ°©μμ μλ―Ένλ€.
- μ»΄νμΌ νμ Compile Time
- ν¨μλ΄μμ μ μλμ΄μ§λ λ³μμΈ μ§μλ³μκ° stackμμμ λ€μ΄κ°κ² λλ€. ex) ν리미ν°λΈνμ , μ°Έμ‘°νμ
- λ°μ΄ν°κ° λ¨Όμ λ€μ΄μ¨κ² λμ€μ λκ°λ FILO(First In Last Out) ꡬ쑰μ΄λ€.
- ν¨μνΈμΆ λ° μ’ λ£μ λμλ°©μκ³Ό μ€νμ μ΄μ©λ°©μμ΄ μΌμΉνλ€.
- PUSHνκ³ POPνλ κ³Όμ μμ λ°μ΄ν°κ° κΎΈμ€ν λ°λλ€.
μ©μ΄ )
PUSH λ°μ΄ν°λ₯Ό λ£λ κ²
POP λ°μ΄ν°λ₯Ό λΉΌλκ²
SP(Stack Pointer) μ€νμ POPνκ±°λ PUSHν μμΉλ₯Ό μλ €μ£Όλ ν¬μΈν°
stack-overflow μ€νμ λ°μ΄ν°κ° κ½μ°¬ μν
stack- underflow μ€νμ λ°μ΄ν°κ° λΉμμ Έ μλ μν
• λ©λͺ¨λ¦¬ ꡬ쑰 - Global μμ
- νλ‘μΈμ€κ° μ’ λ£ν λ κΉμ§ κ°μ§κ³ μμ΄μΌν κ²μ λ΄κ³ μλ€.
- μ»΄νμΌ νμ Compile Time
- λͺ λ Ήμ΄μ§ν©(Instruction-SET) - λͺ λ Ήμ΄ λͺ¨μ → ν¨μλ¨μλ‘ λͺ¨μ¬μλ€.
- 리ν°λ΄ - μμ€μ½λμμ μ¬μ©νλ κ°μ’ κ°λ€
- μ μν μ§μλ³μ(static)
• λ©λͺ¨λ¦¬ ꡬ쑰 - Heap μμ
- newλ‘ ν λΉν λ©λͺ¨λ¦¬ λΈλ‘
- λ°νμ Run Time
- νμμμ μΈμ λ°μ΄ν°κ° μμ±λ μ§ μλ μ§ λͺ¨λ₯΄κΈ° λλ¬Έμ λ³μμ μ΄λ¦μ λ°λ‘ λΆμΌ μκ° μλ€.
→ μ΄λ¦μ λ°λ‘ λΆμΌ μ μμ§λ§ μμμμΉμ 보λ₯Ό κ°μ§κ³ μλ€.
→ μ΄λμ μμμ 보μμΉμΈ λνΌλ°μ€ κ°μ νμ λ€μ΄κ°λ λ°μ΄ν°ν¬κΈ°μ μκ΄μμ΄ λμΌνλ€.
- μ§μ μ κ·Όμ΄ λΆκ°λ₯νμ¬ μ°Έμ‘°λ³μ(=λνΌλ°μ€λ³μ)λ₯Ό ν΅ν΄ μ κ·Όνλ€.
- νμμμ μ΄λ€ λ°μ΄ν°μ ν¬κΈ°κ° λ€μ΄μ¬μ§ λͺ¨λ₯΄κΈ°λλ¬Έμ λ©λͺ¨λ¦¬ ꡬ쑰μμ κ°λ₯ν ν¬κ² ν λΉνλ€.
• λ°°μ΄(Array)
- μ΄λ€ Data-typeμ TλΌκ³ ν λ, Tκ° nκ° μ°μνμ¬ ν λΉλ μλ£κ΅¬μ‘°
- λ°°μ΄μ κΈΈμ΄κ° λμ΄λκ±°λ μ€μ΄λ€ μ μκΈ° λλ¬Έμ Runtime νμμ΄λΌκ³ ν μ μλ€.
- λ°°μ΄μ Heapμμμ λ€μ΄κ°κ² λλλ° Heapμλ μ΄λ¦μ λΆμΌμμκΈ°λλ¬Έμ μ€νμμμ μ μΈν λ³μμ΄λ¦μμ λ°°μ΄μ μμμ 보λ₯Ό λ΄μμ μμΉλ₯Ό μλ €μ£Όλ λ°©μμΌλ‘ μ¬μ©λκ³ μλ€.
• λ°°μ΄μ λ§λλ λ°©λ²
β μ΄κΈ°κ°μ΄ μλ κ²½μ°
β‘ μ΄κΈ°κ°μ΄ μλ κ²½μ°