1. ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์๋ค ๋ณด๋ฉด code, data, stack, heap ์ด๋ผ๋ ๋ง์ด ์ด์ํ์ง๋ ์์ผ์ค ๊ฒ ๊ฐ์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ฌ ์์ญ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ์ด์ ์ฒด์ ์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, ๊ฐ๊ฐ์ ์์ญ์ ํน์ ํ ์ญํ ์ ์ํํฉ๋๋ค.
๊ฐ๋จํ ์๊ฐํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
code ์์ญ:
- ๋ง๊ทธ๋๋ก ์คํํ ์ฝ๋๊ฐ ์ ์ฅ๋์ด ์๋ ์์ญ.
- CPU๊ฐ ์ฌ๊ธฐ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ ๊ฐ์ ธ๊ฐ ์ฒ๋ฆฌ.
- ํ๋ก๊ทธ๋จ ์์~์ข ๋ฃ๊น์ง์ ๋ฉ๋ชจ๋ฆฌ ์กด์ฌ.
์ด ์์ญ์ ํ๋ก๊ทธ๋จ์ ์คํ ์ฝ๋๊ฐ ์ ์ฅ๋์ด ์๋ ๊ณณ์ ๋๋ค. CPU๋ ์ฌ๊ธฐ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ ์คํํฉ๋๋ค. ์ด ์์ญ์ ํ๋ก๊ทธ๋จ์ ์์๋ถํฐ ์ข ๋ฃ๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์์ ๋์ง ์์ต๋๋ค.
data์์ญ:
- ์ ์ญ๋ณ์, static ๋ณ์๋ค์ด ์ ์ฅ.
- ํ๋ก๊ทธ๋จ ์์๊ณผ ๋์์ ํ ๋น, ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ .
์ ์ญ ๋ณ์๋ ์ ์ (static) ๋ณ์๋ค์ด ์ ์ฅ๋๋ ์์ญ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์์๋ ๋ ํ ๋น๋๊ณ , ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋ฉ๋๋ค.
stack์์ญ:
- ์ง์ญ๋ณ์, ๋งค๊ฐ ๋ณ์๋ค์ด ์ ์ฅ.
- ์ปดํ์ผํ์์ ํฌ๊ธฐ ๊ฒฐ์
์ด ์์ญ์ ์ง์ญ ๋ณ์๋ ํจ์์ ๋งค๊ฐ ๋ณ์(parameter)๋ค์ด ์ ์ฅ๋๋ ๊ณณ์ ๋๋ค. ์ปดํ์ผ ํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ฉฐ, ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์คํ์ ๋ฐ์ดํฐ๊ฐ ์์ด๊ณ , ํจ์๊ฐ ์ข ๋ฃ๋ ๋๋ง๋ค ๋ฐ์ดํฐ๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ์คํ์ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ์ฃผ์์์ ๋ฎ์ ์ฃผ์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋ฉ๋๋ค.
heap์์ญ:
- mallocํจ์๋ฑ์ ์ํด ๋์ ์ผ๋ก ํ ๋น๋์ด ์ฌ์ฉ๋๋ ์์ญ.
- ๋ฐํ์์ ํฌ๊ธฐ๊ฒฐ์ (๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํ์คํ์ง ์์ ๋ ์ฌ์ฉํ๋ฉด ์ข๊ฒ ์ฃ ?)
์์ญ์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์์ญ์ ๋๋ค. malloc()๊ณผ ๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ , ์ด๋ฅผ ํด์ ํ๋ ๋ฐ๋ ๊ฐ๋ฐ์์ ๋ช ์์ ์ธ ์กฐ์์ด ํ์ํฉ๋๋ค. ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ํ์คํ์ง ์์ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ํ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋ฉ๋๋ค.
https://velog.io/@averycode/iOS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0-Stack-Heap-Data-Code
https://returnclass.tistory.com/213
'๊ฐ๋ฐ ์๋๋ธ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Flux ๋์์ธ ํจํด (1) (0) | 2023.09.17 |
---|---|
Lazy Loading (0) | 2023.08.12 |
github action .env file ์ถ๊ฐ (0) | 2023.08.11 |
์น ํ์ด์ง ์ฑ๋ฅํฅ์ (0) | 2023.08.02 |
promise (0) | 2023.05.21 |