์ ๊ณง๋ด.
Update()
{
int num = 0;
num += 1;
...
}
์ด๋ฐ ์์ผ๋ก ์ฝ๋ ์ง๋ฉด ๋งค ํ๋ ์๋ง๋ค num ์๋ก ์ ์ธํ๋๊ฑด๊ฐ?
new๊ฐ ์ ๋ถ์ด์์ผ๋ฉด ์ด์ ํ๋ ์์์ ์ ์ธํ๋ค๋๊ฑธ ์์ง์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ์์์ฐจ๋ฆฌ๋?
์ ๊ณง๋ด.
int num = 0;
num += 1;
...
}
์ด๋ฐ ์์ผ๋ก ์ฝ๋ ์ง๋ฉด ๋งค ํ๋ ์๋ง๋ค num ์๋ก ์ ์ธํ๋๊ฑด๊ฐ?
new๊ฐ ์ ๋ถ์ด์์ผ๋ฉด ์ด์ ํ๋ ์์์ ์ ์ธํ๋ค๋๊ฑธ ์์ง์ด๋ ์ปดํ์ผ๋ฌ๊ฐ ์์์ฐจ๋ฆฌ๋?
ํจ์ ๋๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ํด์ ํจ
new๋ก ํ ๋นํ๋๊ฑฐ ์๋๋ฉด ์ ๋ ดํ๊ฒ ์คํ์ ๋ค์ด๊ฐ๋๊ฑฐ๋ผ ๋ฌธ์ ์์๊ฑฐ์
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ค์ค
๋ฒจ๋ฅํ์ ๊ด์ฐฎ๊ธดํด
int, float๊ฐ์ System.Object.ValueType์ ์์๋ฐ์ ํ์์ ํจ์ ๋๋๋ฉด ์์์ ์ฌ๋ผ์ง๊ณ , System.Object.ReferenceType์ ์์๋ฐ์ ๋ชจ๋ classํ์ ๋ณ์๋ ๋์ผํ๊ฒ ํจ์๊ฐ ๋๋๋ฉด ์ฌ๋ผ์ง์ง๋ง new๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ฉด GC์ ๊ด๋ฆฌ ๋์์ผ๋ก ์ถ๊ฐ๋จ. ์ฆ, ํฌ์ธํฐ๋ ํจ์๊ฐ ๋๋๋ฉด ์ฌ๋ผ์ง์ง๋ง ํฌ์ธํฐ์ ์ฐ๊ฒฐ ๋ ๊ฐ์ฒด๋ ๋จ๊ฒจ์ ธ์๋ค๊ฐ ๋์ค์ GC๊ฐ ๊ฐ๋ค ๋ฒ๋ ค์ค
์๋ง๋ค ์ด์ฐจํผ ์คํ ๋ฉ๋ชจ๋ฆฌ๊ตฌ๋ ๊ณ ๋ง์ ๋ชจ๋๋ค ๋๋ํ๋ค ์ ๋ถ