2022. 6. 12. 12:48ใ๐ฅ CS ์ง์
๋ฉ๋ชจ๋ฆฌ์ ๊ตฌ์กฐ
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋์ด์ผ ํฉ๋๋ค.
๋ํ ํ๋ก๊ทธ๋จ์ ๋ณ์๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
์ด์ ์ด์์ฒด์ ๋ค์ ์ฌ๋ฌ ๋ฉ๋ชจ๋ฆฌ ์์ญ๋ค์ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ 4๊ฐ์ง ๋ํ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์์ ์คํ๋ฉ๋๋ค.
1. ์ฝ๋ ์์ญ
2. ๋ฐ์ดํฐ ์์ญ
3. ํ ์์ญ
4. ์คํ ์์ญ
1. ์ฝ๋ ์์ญ
์ฝ๋ ์์ญ์ ๋ง ๊ทธ๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ๋๋ฅผ ์ ์ฅํ๋ ๊ณณ์ด๋ค. Text ์์ญ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค.
CPU๋ ์ฝ๋ ์์ญ์ ์๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํฉ๋๋ค.
2. ๋ฐ์ดํฐ ์์ญ
ํ๋ก๊ทธ๋จ์ ์ ์ญ ๋ณ์(global variable), ์ ์ ๋ณ์(static variable)๊ฐ ์ ์ฅ๋๋ ์์ญ์ ๋๋ค. ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃํ๋ฉด ์๋ฉธ๋ฉ๋๋ค.
* ์ ์ญ ๋ณ์: ํ๋ก๊ทธ๋จ ๋ด ์ด๋ ์ง์ญ์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๋ณ์. ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ๊น์ง ์๋ฉธ๋์ง ์์.
* ์ ์ ๋ณ์: ์ ์ญ ๋ณ์ ๊ฐ์ ๋ ๋ฒ์ . ๋๊ฐ์ด ์ด๋์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ๋ฑ ํ ๋ฒ๋ง ์ด๊ธฐํ๊ฐ ๋ ์ ์๋ค๋ ์ ์ด ๋ค๋ฆ.
3. ํ ์์ญ
๋ฉ๋ชจ๋ฆฌ์ ํ(heap) ์์ญ์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋๋ค.
์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋ฉ๋๋ค. ํ ์์ญ์์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์ ํ ๋น์ ๋ค์ํ ํ์ ์ด์ ์ ์ํด ๊ผญ ํ์ฉ๋๋ ์์ญ์ ๋๋ค.
ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๋ ์์ (Run time)์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ฉ๋๋ค.
4. ์คํ ์์ญ
ํ ์์ญ๊ณผ๋ ๋ฌ๋ฆฌ, ์ปดํ์ผ ํ์(์ฝ๋๊ฐ ์ปดํจํฐ ์ธ์ด๋ก ๋ณํ๋๋ ์์ )์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ฉ๋๋ค. ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋ ์ง์ญ ๋ณ์์ ๋งค๊ฐ ๋ณ์๊ฐ ์ ์ฅ๋ฉ๋๋ค. ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋์๋ค๊ฐ, ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธ๋ฉ๋๋ค.
์ด๋ฌํ ์คํ์ push(ํธ์) ๋์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ค๊ฐ, pop(ํ) ๋์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ์ถํฉ๋๋ค. ํ์ ์ ์ถ(LIFO) ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉฐ ๊ฐ์ฅ ๋นจ๋ฆฌ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋ฆ๊ฒ ์ธ์ถ๋ฉ๋๋ค. ์คํ ์์ญ์ ๋์ ์ฃผ์์์ ๋ฎ์ ์์ญ์ผ๋ก ํ ๋น๋ฉ๋๋ค.
[๋ฌผ์] ๋๋์ฒด ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์๋ก ํ ๋น๋๋ค๋ ์ด์ผ๊ธฐ๊ฐ ๋ฌด์์ด์ฃ ?
[๋ต๋ณ] ์ด๋ ต๊ฒ ์๊ฐํ์ค ํ์ ์์ต๋๋ค. ๋ฎ์ ์ฃผ์๋ ๊ทธ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ชฝ ๋ถ๋ถ, ๋์ ์ฃผ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋์ชฝ ๋ถ๋ถ์ ๋๋ค. ํ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ชฝ๋ถํฐ ์ฑ์๋๊ฐ๊ณ , ์คํ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋์ชฝ๋ถํฐ ์ฑ์๋๊ฐ๋๋ค. ์ด๋ ๊ฒ ์๋ก์ ์์์ ์ด ๋ค๋ฅธ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด์ญ๋๋ค. ๋ ์์ญ ๋ชจ๋ ๋๊ฐ์ ๊ณณ์์ ์์ํ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ ์์ญ์ ๋ฐ์ดํฐ๋ค์ด ์ฝํ๊ณ ์คํฌ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ค๋ฅธ ๊ณณ์์ ์์ํ์ฌ ์ต๋ํ ๋ ์์ญ์ด ๋ง๋์ง ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ Stack overflow, Hip overflow ์๋ฌ๊ฐ ๋ฐ ๋๊ฐ ์์ ํ ๋ฐ, ์ด๋ ์คํ์ด ํ ์์ญ์ ์นจ๋ฒํ์/ ํ์ด ์คํ ์์ญ์ ์นจ๋ฒํ์์ ๋ปํฉ๋๋ค.
'๐ฅ CS ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS ์ง์] Serialization์ ๊ฐ๋ ๊ณผ ์์ (0) | 2022.07.11 |
---|---|
[CS ์ง์] ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ๊ฐ๋ ๋ฐ ์์ (0) | 2022.06.26 |