9. [C / C++] ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋์ ํ ๋น (2)
1. ๋์ ํ ๋น
ํ๋ก๊ทธ๋จ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋ ๋ฐฉ๋ฒ์๋ ์ ์ ๊ณผ ๋์ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด๋
ํ๋ก๊ทธ๋จ์ด ์์๋๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ ํด์ง ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๋ ํ๋ก๊ทธ๋จ์ด ์์ํ๊ธฐ ์ ์ ๊ฒฐ์ ๋๋ฉฐ
ํ๋ก๊ทธ๋จ์ ์คํ ๋์ค์ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
ex) ์ง์ญ๋ณ์, ์ ์ ๋ฐฐ์ด
๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด๋
ํ๋ก๊ทธ๋จ์ด ์คํ ๋์ค์ ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํ์ํ ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ์์ ์ฌ์ฉํ๊ณ , ์ฌ์ฉ์ด ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ฉํฉ๋๋ค.
๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ฅ์ ์ ๋ณ์๊ฐ ์์ฑ๋๊ณ ์๋ฉธ๋๋ ์์ ์
ํ๋ก๊ทธ๋๋จธ ๋ง์๋๋ก ์กฐ์ ํ ์ ์๋ค๋ ์ ์ ๋๋ค.
์ฃผ์ํด์ผํ ์ ์
๋จผ์ ์ผ๋ง๋ ํ ๋น์ ๋ฐ์ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๊ณ ,
๋ฐ๋์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ช ์์ ์ผ๋ก ๋ฐ๋ฉ์ ํด์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
(ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ ํ ์์ญ์์ ๊ด๋ฆฌํฉ๋๋ค.)
2. C์ธ์ด์์์ ๋์ ํ ๋น
C์ธ์ด์์ ๋์ ํ ๋น์ ํ ์์๋ ํจ์๋
malloc()๊ณผ calloc()์ด ์์ต๋๋ค.
1. malloc
(์๋ฃํ*)malloc(๊ฐฏ์ * sizeof(์๋ฃํ))
์ง์ ๋ ํฌ๊ธฐ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ํ ๋นํฉ๋๋ค.
์๋ฉธ์ free() ํจ์๋ฅผ ์ด์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด์ 100๊ฐ์ intํ ์ ์๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ ํ ๋นํด๋ณด๊ฒ ์ต๋๋ค.
malloc()์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด null์ ๋ฐํํ๋ฏ๋ก,
ํญ์ ๋ฐํ๊ฐ์ด null์ด ์๋์ง ์ฒดํฌํ์ฌ์ ํฉ๋๋ค.
malloc()์ ํจ์จ์ฑ์ ์ํ์ฌ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ธฐํํ์ง ์์ต๋๋ค.
์กฐ๊ธ์ด๋ผ๋ ์คํ ์๊ฐ์ ๋จ์ถํ๊ธฐ ์ํด์์ ๋๋ค.
๋ฐ๋ผ์ ์ฒ์์๋ ์ฐ๋ ๊ธฐ๊ฐ์ด ๋ค์ด์๋ค๊ณ ์๊ฐํ๊ณ ,
์ดํ ์์ ์ด ์ํ๋ ๊ฐ์ ์ด๊ธฐํํ์ฌ ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ต๋๋ค.
2. calloc
(์๋ฃํ*)calloc(ํญ๋ชฉ์ ๊ฐฏ์, ํญ๋ชฉ์ ํฌ๊ธฐ)
calloc()์ 0์ผ๋ก ์ด๊ธฐํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๊ธฐํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ป์ ๋๋ calloc()์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
๋ ๋ฐ์ดํธ ๋จ์๊ฐ ์๋ ํญ๋ชฉ ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
3. C++์์์ ๋์ ํ ๋น
์๋ฃํ* pTemp = new ์๋ฃํ
์๋ฃํ* pArr = new[๊ฐฏ์]
delete pTemp
delete[] pArr
C++์์๋ new์ฐ์ฐ์๋ฅผ ํตํด ๋์ ํ ๋น์ ์ํํ๊ณ ,
delete์ฐ์ฐ์๋ฅผ ํตํด์ ์๋ฉธ์ ํฉ๋๋ค.
4. new์ malloc/calloc์ ์ฐจ์ด์
์ฒซ ๋ฒ์งธ
malloc(), calloc()์ ํจ์(C)์ด๊ณ ,
new๋ ์ฐ์ฐ์(C++)์ ๋๋ค.
๋ ๋ฒ์งธ
ํด๋์ค๋ฅผ ๋์ ํ ๋นํ ์,
new ์ฐ์ฐ์๋ ์์ฑ์๋ฅผ ํธ์ถํ์ง๋ง,
malloc๊ณผcalloc์ ์์ฑ์๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค.