์ธ๋ฆฌ์ผ ์จ๋ฐ ์๋ ์์์ ์ธ c ์คํ์ผ ์ฝ๋ฉ์ด๋
ํ๋์ ์ธ ์ค๋งํธํฌ์ธํฐ ์คํ์ผ ์ฝ๋ฉ์ด๋
๋ค์ฃฝ๋ฐ์ฃฝ์ด๋ผ ์กด๋ ๋ณด๊ธฐ ๋ถํธํ๋ ธ
c++ ํ๋๋ฐ ๊ตณ์ด c๋ฅผ ๊ณ ์งํ ํ์๊ฐ ์์์?
int* ptr=new int;
delete ptr;
๋์ std::unique_ptr<int> ptr = make_unique<int>();
int* ptr=new int[5];
๋์ auto ptr=make_unique<int[]>(5);
void (*ptr)()
๋์ std::function<void(void)>
์ด ์ข์๊ฑธ ์ ์์ฐ๋ ธ ใ ใ
ํ๋์ ์ธ ์ค๋งํธํฌ์ธํฐ ์คํ์ผ ์ฝ๋ฉ์ด๋
๋ค์ฃฝ๋ฐ์ฃฝ์ด๋ผ ์กด๋ ๋ณด๊ธฐ ๋ถํธํ๋ ธ
c++ ํ๋๋ฐ ๊ตณ์ด c๋ฅผ ๊ณ ์งํ ํ์๊ฐ ์์์?
int* ptr=new int;
delete ptr;
๋์ std::unique_ptr<int> ptr = make_unique<int>();
int* ptr=new int[5];
๋์ auto ptr=make_unique<int[]>(5);
void (*ptr)()
๋์ std::function<void(void)>
์ด ์ข์๊ฑธ ์ ์์ฐ๋ ธ ใ ใ
๋๊ฐ ์์ด๋ค ๊ทธ๋ฌ์ด? ์์บ ํ๋ฌ์ด ๋
์ธ๋ฆฌ์ผ ์์ฒด์ ์ผ๋ก ๊ตฌํ๋๊ฑฐ ์์ง์๋
์์ง์์ ์ ๋ ๊ฒ ์ฐ๋ ๋ถ๋ถ์ด ์์ด? ๋ธ๋ฆฌ๊ฒ์ดํธ์์๋ง ํจ์ํฌ์ธํฐ ์ฌ์ฉํ๋๊ฑฐ ๊ฐ๋๋ฐ.
์ธ๋ฆฌ์ผ์์ uproperty ์ ์ธํ ๋ก์ฐํฌ์ธํฐ๋ ์๋ ๊ด๋ฆฌํด์ฃผ์ง์๋
์ธ๋ฆฌ์ผ์ ์์ฒด์ ์ธ ๋ฆฌํ๋ ์ ์ด๋ GC๊ฐ ์์์ - dc App
์ธ๋ฆฌ์ผ๋ UObject ์์ ๋ฐ์์ NewObject๋ก ์์ฑํด์ผ ๊ด๋ฆฌ๋๋๊ฑฐ์ง ์ ๋ฐ์์ผ๋ก ์จ๋ ์๋ ๊ด๋ฆฌ๋๋๊ฑฐ ์๋๋ค. ๊ดํ ๊ดํ C++์์ ์ง์ํ๋ ์ค๋งํธ ํฌ์ธํฐ ๋ง๊ณ ์์ฒด์ ์ผ๋ก ๋ง๋ ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์ ๊ณตํ๋๊ฒ ์๋.
์ธ๋ฆฌ์ผ ๊ฐ๋ฐ ํด๋ดค์ผ๋ฉด ๋ฆฌํ๋ ์ ์ด ์ผ๋ง๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ์ง ์ํ ๋ฐ๋ ๊ทธ๋ฐ์๋ฆฌ๋ฅผํจ? ์ํฝ๊ฒ์์ฆ๊ฐ ๋ฐ๋ณด๋์๋๊ณ "ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์์ ์ง์ํ๋ ์ค๋งํธํฌ์ธํฐ"์ "UHT๋ก ์ฝ๋์์ฑ๊น์ง ํด๊ฐ๋ฉฐ ์จ์ผํ๋ GC" ์ฌ์ด์ ํธ๋ ์ด๋ ์คํ๋ฅผ ์๊ฐ ์ํ์๊ฒ๊ฐ์? ๊ทธ๋ผ์๋ ๋ฆฌํ๋ ์ ๊ณผ GC๊ฐ ๊ฐ์ ธ๋ค์ฃผ๋ ์ด์ ์ด ๋๋ฌด ๊ฐ๋ ฅํ๋๊น ํฌ๊ธฐ๋ฅผ ๋ชปํ๊ฑฐ ์๋๊ฒ ๋ - dc App
์ ์ธ๋ฆฌ์ผ ๊ฐ๋ฐ ์ํด๋ด
์๋ด๋ด.. ํ๋๊ฐ์ด ํ์๊ฐ ๋ ํ์ดํ์ด ๊ธธ์ด์ง์ง? ์ฌ๋์ ๋ฐ๋ผ ์งง๊ณ ๋ช ๋ฃํ๊ฑฐ ์ ํธํ๋ ์ฌ๋๋ ๋ง์ ใ ใ ใ ์ฝ๋ฉ ์คํ์ผ์ ์ ์ด์ ์ ๋ต์ด ์๋ ์ ํ์ ๋ถ์ผ๋ผ ์ด๋ฐ ๊ฐ์๊ธ 1๋ ๋ฌด์๋ฏธํ๊ณ ..๋ณธ๋ฌธ๊ณผ๋ ๋ณ๊ฐ๋ก ํ๋ ๋ถ๋ช ํ ์ง๋ฆฌ๋ฅผ ์๋ ค์ฃผ์๋ฉด ์์ฑ์ ๋์ฒ๋ผ ์ง๋ ์๊ฐ ๋ค๋ฅด๋ฉด 1๋ ์ฉ๋ฉ ์ํ๋ ค๋ ์ ๋ค์ ์ธ์์์ ๊ฑฐ๋ฅด๋ฉด ๋ฌด์กฐ๊ฑด ์ด๋์ด๋ผ๋๊ฑฐ๋ ํ์คํจใ ใ ใ ใ ใ
ใ ใ ์งง๊ฒ ํ์ดํํ๋ ค๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋์๋ ์๊ธฐ์ง ใ ใ ใ
์ ๋ต์ด ์๋ค๋ ๋ง์ ๊ตฌํ ๋ฐฉ์์ ๋ํด์ ์๊ธฐ ํ๋๊ฑฐ์ง ์ด๋ฐ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ, ๊ธฐ์ด ์ค์ ๊ธฐ์ด์ ๊ฐ์ ธ๋ค ๋ถ์ด๋๊ฑฐ ์๋๋ค. ๋ณธ์ธ ๋ฌด์ง๋ฅผ ์ ๋จผ ๋ง ์ธ์ฉํด์ ๋ฎ์ง๋ง๋ผ.