λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍏 Today I Learned/Swift 문법

[Swift] λ©”λͺ¨λ¦¬ ꡬ쑰

by Joseph Seong 2024. 1. 3.

 

 

λ©”λͺ¨λ¦¬ ꡬ쑰

 

 

μš΄μ˜μ²΄μ œκ°€ μ œκ³΅ν•˜λŠ” λ©”λͺ¨λ¦¬ 곡간 ν‘œν˜„



Code μ˜μ—­

  • Code μ˜μ—­μ€ ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” 곡간
  • 컴파일된 μ†ŒμŠ€ μ½”λ“œμ™€ ν”„λ‘œκ·Έλž¨μ˜ λͺ…령어듀이 μ €μž₯λ˜μ–΄ μžˆλ‹€.
  • 이 μ˜μ—­μ€ 읽기 μ „μš©(Read-Only)이며, ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄μ„œ μˆ˜μ •λ˜μ§€ μ•ŠλŠ”λ‹€.

 

Data μ˜μ—­

  • Data μ˜μ—­μ€ μ „μ—­ λ³€μˆ˜(global variables)와 정적 λ³€μˆ˜(static variables), μƒμˆ˜(constants)κ°€ μ €μž₯λ˜λŠ” κ³³
  • ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œ ν• λ‹Ήλ˜κ³  ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μœ μ§€λœλ‹€.

 

Stack μ˜μ—­

  • μ†ŒμŠ€μ½”λ“œκ°€ μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ κΈ°κ³„μ–΄λ‘œ λ³€ν™˜λ˜λŠ” μ‹œμ (컴파일 νƒ€μž„)에 크기가 κ²°μ •λœλ‹€.
  • Stack μ˜μ—­μ€ ν•¨μˆ˜ 호좜과 κ΄€λ ¨λœ 정보λ₯Ό μ €μž₯ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.
  • ν•¨μˆ˜κ°€ 호좜될 λ•Œλ§ˆλ‹€ ν•΄λ‹Ή ν•¨μˆ˜μ˜ 둜컬 λ³€μˆ˜(local variables), ν•¨μˆ˜ λ§€κ°œλ³€μˆ˜(parameters), λ°˜ν™˜ μ£Όμ†Œ(return address) 그리고 ν•¨μˆ˜ ν˜ΈμΆœμ— ν•„μš”ν•œ 기타 정보가 μŠ€νƒμ— μ €μž₯λœλ‹€.
  • ν•¨μˆ˜κ°€ 싀행을 마치면 ν•΄λ‹Ή ν•¨μˆ˜μ™€ κ΄€λ ¨λœ 데이터가 μŠ€νƒμ—μ„œ μ œκ±°λœλ‹€.
  • μŠ€νƒμ€ ν›„μž…μ„ μΆœ(Last-In-First-Out, LIFO) ꡬ쑰λ₯Ό κ°€μ§€κ³  μžˆλ‹€.
  • κ°’νƒ€μž…(value Type)이 μ €μž₯λ˜λŠ” μ˜μ—­

 

Heap μ˜μ—­

  • Heap μ˜μ—­μ€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑(λŸ°νƒ€μž„) λ™μ μœΌλ‘œ ν• λ‹Ήλœ 데이터가 μ €μž₯λ˜λŠ” κ³³
  • νž™μ€ λŸ°νƒ€μž„ 쀑에 λ©”λͺ¨λ¦¬ 할당이 ν•„μš”ν•œ 경우 μ‚¬μš©λ˜λ©°, κ°œλ°œμžκ°€ 직접 μ œμ–΄ν•  수 μžˆλ‹€.
  • νž™μ— μ €μž₯된 λ°μ΄ν„°λŠ” μ§μ ‘μ μœΌλ‘œ 포인터λ₯Ό 톡해 μ ‘κ·Ό(μ°Έμ‘°)λœλ‹€.
  • νž™μ€ μŠ€νƒκ³Ό 달리 λ©”λͺ¨λ¦¬μ˜ 자유 곡간을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•˜λ―€λ‘œ, ν¬κΈ°λ‚˜ 수λͺ…에 λŒ€ν•œ 동적인 μš”κ΅¬μ— λŒ€μ‘ν•  수 μžˆλ‹€.
  • μ°Έμ‘°νƒ€μž…(reference Type)이 μ €μž₯λ˜λŠ” μ˜μ—­