์๋
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต์ ์ํค๋๊ฑฐ, ๋ ํผ๋ฐ์ค๋ง ๋๊ธฐ๋๊ฑฐ, shallow copy
๋ค ๋๊ฐ์ ๋ง์ด์ผ ๋น๊ตฌ๋ค์
์๋ ๊ทธ ๋ง์ ๋๊ธ๋ค ์ค์ ์ ๋๋ก ์ง์ด์ฃผ๋์ ๊ฐ ๋จ ํ๋ช ๋ ์๋ค
์๋
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต์ ์ํค๋๊ฑฐ, ๋ ํผ๋ฐ์ค๋ง ๋๊ธฐ๋๊ฑฐ, shallow copy
๋ค ๋๊ฐ์ ๋ง์ด์ผ ๋น๊ตฌ๋ค์
์๋ ๊ทธ ๋ง์ ๋๊ธ๋ค ์ค์ ์ ๋๋ก ์ง์ด์ฃผ๋์ ๊ฐ ๋จ ํ๋ช ๋ ์๋ค
๋๋ง์ด ๋ค ๋ง์
์ฐธ๊ณ ๋ก C#์ ๋งํ๋๊ฑฐ ๊ฐ์๋ฐ ๋ฆฌ์คํธ ํด๋ฆฌ์ดํ๊ณ null๋ก ์ด๊ธฐํ ์ํค๋ฉด gc๊ฐ ์์์ ๋ฉ๋ชจ๋ฆฌ ํ๋ฆฌ ์์ผ์ค๋ค.
๋๊ฐ ์ง๊ธ ๋ง๋ป์ ์๋ชป์ดํดํ๊ฑฐ๋ค
์๋ ๋ ๋๊ธ๋ค์ด ์ธ์ฐ๊ณ ์๋ ๋ด์ฉ ๋งํ๋๊ฑฐ์. ๋ค ๋๊ฐ์ ๋ง๋ก ํ์ง๊ฑฐ๋ฆฌ ํ๊ณ ์์์ "ListA = ListB ํ๋ฉด ์นดํผ๋๊ฑด ๋ฆฌ์คํธ ์์ฒด์ ๋ ํผ๋ฐ์ค ๋ฟ์ ๋ฅ์นดํผ๊ณ ์๋ก์นดํผ๊ณ ๋ฌธ์ ๊ฐ ์๋๋ผ ์์ ๋ด์ฉ๋ฌผ ์นดํผ๊ฐ ์๋๊ฑฐ์ผ" "์ฐ ์ฌ๋ฆฐ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ง ๊ณต์ ์์ผ๋์ ๊ฑฐ๋ผ๊ณ ํ๊ณ ๋ฅ์นดํผ ์๋ก์นดํผ๋ ๋๊ธ์์ ๋์จ ์๋ฆฌ๋ค" ๊ทธ๋ฆฌ๊ณ ํ์ฌ์ฐ ์ฌ๋ฆฐ๋์ด ๋ง๋ ๋งํ์ C++์ด๋ฐ๊ฑด ๋๊ฐ ์ง์ ํ๋ฆฌํด์ค์ผํ๋๋ฐ C#์ gc๊ฐ ๊ด๋ฆฌํด์ฃผ๋๊น ๋๊ฐ clear๋ง ํด์ฃผ๋ฉด ๋ผ. ๊ทผ๋ฐ ๊ทธ๊ฑฐ๊ฐ์ง๊ณ ํ์ฌ์ฐ ์ฌ๋ฆฐ ๋์ด ํ๋ ธ๊ณ ๋๊ธ๋ค๋ ์๊ธฐ๋ค๋ค์ด ๋ญ ์๋ฆฌ๋ฅผ ํ๋์ง ๋ชจ๋ฅด๋๊ฑฐ ๊ฐ์์ ์ฌ๋ฆฐ๊ฑฐ์
์๋ListA[0] = T1ListA[1] = T2์ผ๊ฒฝ์ฐListA = ListBํ๋ฉดListB[0] = T1ListB[1] = T2์ด๋ฐ์์ผ๋ก ๋๋๊ฒ ์๋๋๊ฑธ ๋งํ๋๊ฑฐ์์์ ์ด์ ์ฐธ์กฐ๋ฅผ ์ํ๊ฒ ๋๋ค๋๊ฑฐ๊ณ ๊ทธ๋ฆฌ๊ณ ์ฐธ์กฐ๋ฅผ ์ ์์ ์ผ๋ก ์์ผฐ๋คํด๋ ListA๊ฐ ์กด์ฌํ๋๊น ListB๋ฅผ Clearํด๋์ง์ null์ ํด์ฃผ์ง ์๋ ์ด์ GC๋จน์ด๊ฐ ์๋๊ณ ListA๋ ๊ทธ๋๋ก ์กด์ฌํ๋ค๋๊ฑฐ์ผ
์๋ ๋๊ฐ ์ง๊ธ '์ฐธ์กฐ'์ ์๋ฏธ๋ฅผ ์๋ชป ์ดํดํ๊ฑฐ ๊ฐ์๋ฐ?
๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋๋ฒ์งธ ๋๊ธ์ ๋งํ๋ฏ์ด null๋ก ์ด๊ธฐํ ์ํจ๋ค๋ ๊ฐ์ ํ์ ํ ๋ง์ด์์
๊ฑฐ๊ธฐ ๊ธ์ null ์์ฒด๊ฐ ์๋๋ฐ ์ ์๊พธ ๋ ํผ์ ๊ฐ์ ํ๊ณ ๋งํ๋๊ฑฐ์ผ?
๋๊ฐ ์ง๊ธ '์ฐธ์กฐ'๋ผ๋ ์ฉ์ด๋ฅผ ๋ฐ๋๋ก, ํน์ ์์ด์ฐ๊ธฐ ๋๋ฌธ์ ํ๋ ๋ง์ด์ผ
๋ ๋๊ธ์ ๋ง์ง๋ง 3์ค์ ๊ณ ์น๋ฉด ์ ์ด์ ์ฐธ์กฐ๋ฅผ 'ํ๊ฒ' ๋๋ค๋๊ฑฐ๊ณ ๊ทธ๋ฆฌ๊ณ ์ฐธ์กฐ๋ฅผ ์ ์์ ์ผ๋ก ์์ผฐ๋ค ํด๋ ListA๊ฐ ์กด์ฌํ๋๊น ListB๋ฅผ clear ํด๋ ์ง์ null์ ํด์ฃผ์ง ์๋ ์ด์ gc๋จน์ด๊ฐ ์๋๊ณ listA๋ ๊ทธ๋๋ก ์กด์ฌํ๋ค๋ ๊ฑฐ์ผ ์ด๋ฐ๊ฑฐ ์ง๊ณ ๋์ด๊ฐ๋๊ฒ ์ชผ์ํด ๋ณด์ฌ๋ ์ด๋ฐ๊ฑฐ ์์ด์ฐ๋ฉด ๋ฃ๋ ์ฌ๋์ด ๊ต์ฅํ ํผ๋์ค๋ฝ๋ค
๋ญ ๊ทธ๋ฆฌ๊ณ ์๊ธ ๋ณด๋ null์ ๋ด๊ฐ ๋ง๋๋ก ๊ฐ์ ํ๊ฑด ๋ง๋ค
์ ๊ธฐ ๋ญ๋ ๊ฑฐ ์์๋ ๊ฑฐ๊ฑฐ ์ด ๊ฑฐ์๊ธฐ ์ด์ด ๊ทธ๊ฑฐ ๋ง์ฌ ์ด์ ๋๋ป์