[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
์ด์์ฒด์ ๋ ํ๋ก์ธ์ค์ ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋๋ฐ, ๋ค์ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋นํ๋ค.
์์์๋ถํฐ ์คํ, ํ, ๋ฐ์ดํฐ(BSS, Data) ์์ญ, ์ฝ๋ ์์ญ์ผ๋ก ๊ตฌ๋ถ๋๋ค.
์คํ์ ์ฃผ์๊ฐ ์์ชฝ๋ถํฐ ํ ๋น๋๊ณ , ํ์ ์๋์ชฝ๋ถํฐ ์ฃผ์๊ฐ ํ ๋น๋๋ค.
์คํ๊ณผ ํ
์คํ๊ณผ ํ์ ๋์ ํ ๋น์ด ๋๋ฉฐ, ๋์ ํ ๋น์ด๋ ๋ฐํ์ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์คํ์๋ ์ง์ญ ๋ณ์, ๋งค๊ฐ๋ณ์, ์คํ๋๋ ํจ์์ ์ํด ๋์ด๋๊ฑฐ๋ ์ค์ด๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ํธ์ถ๋ ๋์ ํ๊ฒฝ ๋ฑ ํน์ ์ ๋ณด๊ฐ ์คํ์ ์ ์ฅ๋๋ค.
๋, ์ฌ๊ท ํจ์๊ฐ ํธ์ถ๋ ๋๋ ํด๋น ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ์๋ก์ด ์คํ ๊ณต๊ฐ์ด ํ ๋น๋๊ธฐ ๋๋ฌธ์ ํจ์ ๋ด์ ๋ณ์ ์งํฉ์ด ํด๋น ํจ์์ ๋ค๋ฅธ ์ธ์คํด์ค ๋ณ์๋ฅผ ๋ฐฉํดํ์ง ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ ๋๋ง๋ค ์๋ก์ด ์คํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ ๋น๋๊ธฐ ๋๋ฌธ์ ์ฌ๊ท ํจ์์ ์ ์ ํ ์ข ๋ฃ ์กฐ๊ฑด์ ์ฃผ์ง ์์ผ๋ฉด ๊ณ์ํด์ ์คํ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๋ฉด์ ์คํ ๊ณต๊ฐ์ด ์ด๊ณผ๋๋ ์คํ ์ค๋ฒํ๋ก์ฐ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
ํ์ ๋์ ์ผ๋ก ํ ๋น๋๋ ๋ณ์๋ค์ ๋ด๋๋ค. malloc(), free() ํจ์๋ฅผ ํตํด ๊ด๋ฆฌํ ์ ์๊ณ , ๋์ ์ผ๋ก ๊ด๋ฆฌ๋๋ ์๋ฃ ๊ตฌ์กฐ๋ ํ ์์ญ์ ์ฌ์ฉํ๋ค. ๋ํ์ ์ผ๋ก vector๊ฐ ์๋ค.
๋ฐ์ดํฐ ์์ญ๊ณผ ์ฝ๋ ์์ญ
๋ฐ์ดํฐ ์์ญ๊ณผ ์ฝ๋ ์์ญ์ ์ ์ ํ ๋น์ด ๋๋ฉฐ, ์ ์ ํ ๋น์ด๋ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ๋งํ๋ค.
๋ฐ์ดํฐ ์์ญ์ BSS, Data, code/text ์์ญ์ผ๋ก ๋๋์ด์ ์ ์ฅ๋๋ค.
BSS(Block Started by Symbol) ์์ญ์ ์ ์ญ ๋ณ์ ๋๋ static, const๋ก ์ ์ธ๋์ด ์๊ณ 0์ผ๋ก ์ด๊ธฐํ๋์ด ์๊ฑฐ๋ ์ด๊ธฐํ๊ฐ ์์ ๋์ง ์์ ๋ณ์๋ค์ด ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋๋ค.
Data ์์ญ์ ์ ์ญ ๋ณ์ ๋๋ static, const๋ก ์ ์ธ๋์ด ์๊ณ 0์ด ์๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ ๋ณ์๊ฐ ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ํ ๋น๋๋ค.
code/text ์์ญ์๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ค.