EC 789
- 1. ํญ๋ชฉ 41 : ํ
ํ๋ฆฟ ํ๋ก๊ทธ๋๋ฐ์ ์ฒ๋ฆฟ๊ธธ๋ ์์์ ์ธํฐํ์ด์ค์ ์ปดํ์ผ ํ์ ๋คํ์ฑ๋ถํฐ
- 2. ํด๋์ค์ ํ
ํ๋ฆฟ์ ์ธํฐํ์ด์ค์ ๋คํ์ฑ์ ์ ๊ณตํ์ง๋ง ๊ทธ ํน์ฑ์ด ๋ค๋ฅด๋ค.
ํด๋์ค์ ๊ฒฝ์ฐ ์์ค์ฝ๋๋ฅผ ํตํด ์ธํฐํ์ด์ค์ ํ์ธ์ด ๋๋ ๋ช
์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ง๋ง
ํ
ํ๋ฆฟ์ ๊ฒฝ์ฐ ์ ์๋ typename์ด ์ง์ํด์ผ ํ๋ ํํ์์ ์กฐ๊ฑด๋ง ํ์ธํ ์ ์๋ ์์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
ํด๋์ค์ ๊ฒฝ์ฐ ๋คํ์ฑ์ ์์ด์ ๋ฐํ์ ์์ ํจ์ ํ
์ด๋ธ์ ํตํด ํธ์ถํ ํจ์๊ฐ ์ ํด์ง๋ ๋ฐํ์ ๋คํ์ฑ์,
ํ
ํ๋ฆฟ์ ๊ฒฝ์ฐ ํธ์ถ๋ ํจ์๊ฐ ์ปดํ์ผ ์์ ๊ฒฐ์ ๋๋ ์ปดํ์ผ ํ์ ๋คํ์ฑ์ ์ ๊ณต
- 3. ํญ๋ชฉ 42 : typename์ ๋ ๊ฐ์ง ์๋ฏธ๋ฅผ ์ ๋๋ก ํ์
ํ์
- 4. ๊ธฐ๋ณธ์ ์ผ๋ก ํ
ํ๋ฆฟ์์ ์ฌ์ฉํ๋ class์ typename์๋ ์ฐจ์ด๊ฐ ์๋ค.
ํ์ง๋ง typename์ ์จ์ผ ํ ๋๊ฐ ์๋๋ฐ ๊ทธ ๊ฒฝ์ฐ๋ ํ
ํ๋ฆฟ ์์์ ์ค์ฒฉ์์กด์ด๋ฆ์ ์ฌ์ฉํ ๋
์ค์ฒฉ์์กด์ด๋ฆ์ด๋ C::iterator ์ ๊ฐ์ด C๋ผ๋ ํ
ํ๋ฆฟ์์ ์ ์ธ๋ ํ์
์ ์์กดํด์ ::iterator๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
ํ์ง๋ง typename์ ์ฌ์ฉํ์ง ์์์ผ ํ๋ ๊ฒฝ์ฐ๋ ์๋๋ฐ
์์๋๋ ๊ธฐ๋ณธ ํด๋์ค ๋ฆฌ์คํธ์์์ ๋ฉค๋ฒ ์ด๊ธฐํ ๋ฆฌ์คํธ ์์์๋ ์ฌ์ฉํ์ง ์๋๋ค.
์ฐธ๊ณ ๋ก ์ด๋ ๊ฒ ์ค์ฒฉ์์กด์ด๋ฆ์ ๊ฒฝ์ฐ ์์ฐ์ค๋ ์ด๋ฆ์์ฒด๊ฐ ๊ธธ์ด์ง๊ณ ์์ typename๊น์ง ๋ถ์ฌ์ ์จ์ผ ํ๋ฏ๋ก
๊ฐ๋จํ๊ฒ typedef๋ก ์ฌ์ฉํ๋ฉด ํธํ๋ค.
- 5. ํญ๋ชฉ 43 : ํ
ํ๋ฆฟ์ผ๋ก ๋ง๋ค์ด์ง ๊ธฐ๋ณธ ํด๋์ค ์์ ์ด๋ฆ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์์ ๋์
- 6. ํ
ํ๋ฆฟ์ ํน์ ํ์
์ ๋ํด์๋ง ๋ค๋ฅธ ๋์์ ํ๋ ๋ฒ์ ์ ๋ง๋ค ์ ์๊ณ ์ด๋ฅผ ์์ ํ
ํ๋ฆฟ ํน์ํ๋ผ ํ๋ค.
ํ
ํ๋ฆฟ ํด๋์ค๋ฅผ ์์ ๋ฐ๋ ๊ฒฝ์ฐ ํน์ํ๋ ํ
ํ๋ฆฟ ํด๋์ค๊ฐ ์กด์ฌํ ์ ์์ผ๋ฏ๋ก
์์ ๋ฐ์ ํด๋์ค์์ ๊ธฐ๋ณธ ํ
ํ๋ฆฟ ํด๋์ค์ ํน์ ํจ์๊ฐ ์กด์ฌํ๋ค๋ ๋ณด์ฅ์ ํ ์ ์๋ค.
๊ทธ๋์ ํ
ํ๋ฆฟ์ ์์๋ฐ์์ ๊ธฐ๋ณธ ํด๋์ค์ ์๋ ํน์ ํจ์๋ฅผ ํธ์ถํ๊ณ ์ ํ๋ค๋ฉด
ํจ์ ํธ์ถ ์์ this-> ๋ฅผ ๋ถ์ด๊ฑฐ๋
using namespace template<class>::function; ๊ฐ์ด ์ ํจ ๋ฒ์๋ฅผ ์ถ๊ฐํ๋ค.
๋ง์ฝ ์ปดํ์ผ ๊ณผ์ ์์ ์์ ํจ์ ํธ์ถ์ด ๋ถ๊ฐ๋ฅํ ์ํ๋ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํด์ ํ์ธํ ์ ์๋ค.
- 7. ํญ๋ชฉ 44 : ๋งค๊ฐ๋ณ์์ ๋
๋ฆฝ์ ์ธ ์ฝ๋๋ ํ
ํ๋ฆฟ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ์ํค์
- 8. ํ
ํ๋ฆฟ ํด๋์ค์์ ํ์
๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅด๋ฉด ์ฌ์ค์ ๊ฐ์ ํจ์๋ผ๋ ๊ฐ๊ฐ์ ํ์
๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ฐ๋ก ์์ฑ๋๋ค.
์ด๋ ์์นซ ํ๋ ์ผ์ ๊ฐ์ ์ฝ๋๊ฐ ์ค๋ณต๋๋ ์ผ์ด ์๊ธธ ์ ์๋ค.
๊ทธ๋์ ํ
ํ๋ฆฟ ํด๋์ค ์์์ ์ ์๋ ํจ์๋ค ๊ฐ์ด๋ฐ ํ์
๋งค๊ฐ๋ณ์์ ์์กด์ ์ด์ง ์์ ํจ์์ ๊ฒฝ์ฐ์๋
์ธ๋ถ๋ก ๋ถ๋ฆฌํด์ ์ด๋ฅผ ์ฌ์ฉํ๋๋ก ํด์ ์ค๋ณต ์ฝ๋๋ฅผ ์ค์ผ ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ ๊ณตํต๋ ์์
์ ํ๋ ๊ธฐ๋ณธ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ
์ด๋ฅผ ์์๋ฐ์ ํด๋์ค๊ฐ ์์
์ ํ์ํ ๋ฐ์ดํฐ์ ํฌ์ธํฐ๋ฅผ ๊ธฐ๋ณธ ํด๋์ค๊ฐ ๊ฐ์ง ์ ์๋๋ก ํ ๋ค์
๊ธฐ๋ณธ ํด๋์ค์ ํจ์๋ฅผ ํธ์ถํด์ ์์
์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ํ์
์ ๋ฐ๋ผ ๋ฐ๋ก ํจ์๋ฅผ ๋ง๋๋ ๋ฐฉ์๊ณผ ๋น๊ตํ๋ฉด ์ต์ ํ๋ผ๋ ์ธก๋ฉด์์ ์ด ๋ฐฉ๋ฒ์ ์ฝ๊ฐ์ ์ํด๋ฅผ ๋ณผ ์ ์๋ค.
ํ์ง๋ง ์คํ ์ฝ๋๊ฐ ์์์ง์ผ๋ก์จ ํ์ด์ง ํดํธ์ ํ์๋ฅผ ์ค์ผ ์ ์๋ ๊ธฐํ๊ฐ ์๊ธฐ๋ฉฐ ์ด๋ ๊ฒ์ด ์ด๋์ธ์ง๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
- 9. ํญ๋ชฉ 45 : โํธํ๋๋ ๋ชจ๋ ํ์
โ์ ๋ฐ์๋ค์ด๋ ๋ฐ๋ ๋ฉค๋ฒ ํจ์ ํ
ํ๋ฆฟ์ด ์ง๋ฐฉ!
- 10. ๊ฐ์ ํ
ํ๋ฆฟ์ ํตํด ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ผ ํ๋๋ผ๋ ํ์
๋งค๊ฐ๋ณ์๊ฐ ๋ค๋ฅด๋ฉด ๊ทธ ๊ฐ์ฒด๋ค์ ์์ ๋ค๋ฅธ ์กด์ฌ๋ค์ด ๋๋ค.
๊ทธ๋์ ์ด๋ค ์ฌ์ด์์ ํ๋ณํ์ ํ๋ ค๋ฉด ์ง์ ์ ์ํด์ฃผ์ด์ผ ํ๋ค.
ํ์ง๋ง ์์น์ ์ผ๋ก ํ
ํ๋ฆฟ์ ํ์
๋งค๊ฐ๋ณ์๋ โ๋ฌด์์ด๋ โ ๋ ์ ์์ผ๋ฏ๋ก ์ ์ํด ์ฃผ์ด์ผ ํ ํจ์๋ ๋ฌดํ๋๊ฐ ๋๋ค.
๊ทธ๋์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฌดํ๋์ ์ญํ ์ ์ํํ ์ ์๋ ํ
ํ๋ฆฟ ํจ์๋ฅผ ๋ด๋ถ ํจ์๋ก ๋ค์ ์ด์ฉํ๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ํ์
๋งค๊ฐ ๋ณ์์ ๋ฐ๋ผ์ ํ๋ณํ์ ๊ฐ๋ฅ ์ฌ๋ถ์ ๋ฐ๋ผ์ ๊ทธ ์์
์ ์ํํ ์ ์๋๋ก ์ ์ฝ์กฐ๊ฑด์ ๋ง๋ค์ด ๋์ด์ผ ํ๋ค.
์ด๋ฐ ๋ฐฉ์์ ์ ๊ทผ์ ์์ฑ์ ๋ฐ ๋์
์ฐ์ฐ์์ ํ์ฉ๋ ์ ์๋๋ฐ
๋์
์ฐ์ฐ์์ ์ฃผ์ํ ์ ์ ํ
ํ๋ฆฟ ํจ์๋ก ๋์
์ฐ์ฐ์ ์ ์ํ๋ค๊ณ ํ๋๋ผ๋ ๊ธฐ๋ณธ ๋์
์ฐ์ฐ์ด ์ ์ธ ๋์ด ์์ง ์์ผ๋ฉด
์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ธฐ๋ณธ ๋์
์ฐ์ฐ๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ํด์ฃผ์ด์ผ ํ๋ค.
- 11. ํญ๋ชฉ 46 : ํ์
๋ณํ์ด ๋ฐ๋์งํ ๊ฒฝ์ฐ์๋ ๋น๋ฉค๋ฒ ํจ์๋ฅผ ํด๋์ค ํ
ํ๋ฆฟ ์์ ์ ์ํด ๋์
- 12. ํ
ํ๋ฆฟ ์ธ์ ์ถ๋ก ๊ณผ์ ์์๋ ์์์ ํ์
๋ณํ์ ๊ณ ๋ คํ์ง ์๋๋ค.
์ด๋ฐ ํน์ง์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ํด๋์ค ์ธ๋ถ์ ํ
ํ๋ฆฟ ํจ์๋ฅผ ๋ง๋ค์ด๋๊ณ
ํ
ํ๋ฆฟ ํด๋์ค ์์์ ์ด ํจ์๋ฅผ ํ๋ ๋ ํด๋์ค๋ก ๋ฑ๋กํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์ด๋ ํ๋ ๋ ํจ์๋ฅผ ๋ฑ๋กํ ๋๋ ์ ์ธ๋ง ํ๋ ๊ฒ์ด ์๋๋ผ ์ ์๊น์ง ํ๊ฑฐ๋ ์ธ๋ถ์ ํ
ํ๋ฆฟ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํด์ผ ํ๋ค.
- 13. ํญ๋ชฉ 47 : ํ์
์ ๋ํ ์ ๋ณด๊ฐ ํ์ํ๋ค๋ฉด ํน์ฑ์ ๋ณด ํด๋์ค๋ฅผ ์ฌ์ฉํ์
- 14. ํ
ํ๋ฆฟ์ ํ์
๋งค๊ฐ ๋ณ์๊ฐ ๋ฌด์์ด๋ ๊ฐ๋ฆฌ์ง ์์ผ๋ฏ๋ก
๊ตฌํ ๊ณผ์ ์์ ํ์
๋งค๊ฐ ๋ณ์์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๋์์ ๋ณด์ฅํด์ผ ํ๋ค๋ฉด ๊ทธ ํ์
์ ํ์ธ ํ ์ ์์ด์ผ ํ๋ค.
์ด๋ฅผ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด ํน์ฑ์ ๋ณด ํด๋์ค์ด๋ค.
๋ฐ๋ก ํ์
๋งค๊ฐ ๋ณ์์ ํน์ฑ์ ํ์ธํ๊ณ , ๊ทธ ํน์ฑ์ ๋ง๋ ์๋์ ํ๋๋ก ๊ตฌํํ๋ ๊ฒ์ด๋ค.
์ด๋ ํ
ํ๋ฆฟ์ ์ปดํ์ผ ๋จ๊ณ์์ ๊ตฌํ๋๋ค๋ ์ ์ ์ด์ฉํด์ ์ด ํน์ฑ ํ์ธ์ ๋ฐํ์์ ํ์ง ์๊ณ
์ปดํ์ผ ํ์์ ํ ์ ์๋๋ก ํ๋ฉด ๋ฐํ์ ๋์ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
- 15. ํญ๋ชฉ 48 : ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ, ํ์ง ์๊ฒ ๋๊ฐ?
- 16. ํ
ํ๋ฆฟ์ด C++์ ์ถ๊ฐ๋๋ฉด์ ์ด ํ
ํ๋ฆฟ์ ์ด์ฉํ ๋ค์ํ ๊ฐ๋ฅ์ฑ์ ๋ฐ๊ตด๋์๋๋ฐ,
์ด ๊ฐ๋ฅ์ฑ์ ํ์ฉํ๋ ๊ฒ์ด ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ด๋ค.
ํ
ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ ๋ฐํ์ ์์ ํด์ผ ํ ์์
์ ์ปดํ์ผ ์์
๊ณผ์ ์ผ๋ก ๊ฐ์ ธ์์
์ค์ ํ๋ก๊ทธ๋๋ฐ์ด ์คํ๋๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค๋ ์ ๊ณผ
๋ง์น ํจ์ํ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๊ฐ์ด ๊ธฐ์กด์ C++ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก๋ ํ๊ธฐ ์ด๋ ค์ด ์์
๋ค์ ์ฝ๊ฒ ํ ์ ์๋ ์ ์ด ์๋ค.
- 17. ํญ๋ชฉ 49 : new ์ฒ๋ฆฌ์์ ๋์ ์๋ฆฌ๋ ์ ๋๋ก ์ดํดํ์
- 18. new์ ๊ธฐ๋ณธ์ ์ธ ์ญํ ์ ํ์ํ ๊ณต๊ฐ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ณ ,
์ด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ ๋๋ก ๋์ง ์์ผ๋ฉด ์์ธ๋ฅผ ๋์ง๋๋ฐ(์ ๋์ง๋ new๋ ์๋ค) ์ด ์๋ฌ ์ฒ๋ฆฌ ํจ์๋ฅผ new-handler๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด new-handler๋ ์ง์ ๋ค๋ฅธ ํจ์๋ฅผ ์ ์ํ๊ณ ๋ฐ๊ฟ ์ค ์ ์๋๋ฐ, ์ด๋ ์ฌ์ฉํ๋ ํจ์๊ฐ set_new_handler ํจ์์ด๋ค.
์ด ํจ์์ ํน์ง์ ์ธ์๋ก ๋ฃ์ ์๋ก์ด new_handler๋ฅผ new์ new-handler๋ก ๋ฑ๋กํ๊ณ
๊ธฐ์กด์ ๋ฑ๋ก๋์ด ์๋ new-handler๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๋ค.
์์ธ๋ฅผ ๋์ง์ง ์๋ new์๋ ํ๊ณ๊ฐ ์๋๋ฐ, ์๋ฌด๋ฆฌ new์์ ์์ธ๋ฅผ ๋์ง์ง ์๋๋ผ๊ณ
new๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ ๊ณผ์ ์์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- 19. new๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ๋ค ๊ฐ์ง ์์
์ค ํ๋๋ ๋ฐ๋์ ํด์ผ ํ๋ค.
์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ๋ง์ด ํ๋ณดํ๋ค.
- ํ์ฌ ์์
์ดํ์ ๋ฉ๋ชจ๋ฆฌ ํ๋ณด๋ฅผ ๋ ์ฝ๊ฒ ํ ์ ์๊ฒ ํ๋ ๊ฒ
๋ค๋ฅธ new ์ฒ๋ฆฌ์๋ฅผ ์ค์นํ๋ค.
- ๋ง์ฝ ์์ ์ด ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์คํจํ๋ค๋ฉด, ์ด ์คํจ๋ฅผ ํด๊ฒฐํด ์ค ์ ์๋ ๋ค๋ฅธ new ์ฒ๋ฆฌ์๋ฅผ ๋ถ๋ฌ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น
new ์ฒ๋ฆฌ์์ ์ค์น๋ฅผ ์ ๊ฑฐ
- set_new_handler์ ๋ ํฌ์ธํฐ๋ฅผ ํ ๋นํด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์คํจํ๋ฉด ์์ธ๋ฅผ ๋์ง๊ฒ ํ๋ค
์์ธ๋ฅผ ๋์ง๋ค.
- bad_alloc ํน์ ๊ทธ๋ก๋ถํฐ ํ์๋ ์์ธ๋ฅผ ๋์ง๋ค. ๊ทธ๋ผ new์์๋ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฏ๋ก ์ฒ์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญํ ๊ณณ๊น์ง ๋๋ฌ
๋ณต๊ทํ์ง ์๋๋ค
- abort๋ exit๋ฅผ ํธ์ถ
- 20. ํญ๋ชฉ 50 : new ๋ฐ delete๋ฅผ ์ธ์ ๋ฐ๊ฟ์ผ ์ข์ ์๋ฆฌ๋ฅผ ๋ค์์ง๋ฅผ ํ์
ํด ๋์
- 21. new๋ delete๋ C++์ ๋ณดํธ์ ์ธ ์๊ตฌ๋ฅผ ๋ง์กฑ์ํค๊ธฐ ์ํ ๊ตฌํ์ด ๋์ด ์์ผ๋ฏ๋ก
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ง์ถฐ์ ์๋กญ๊ฒ ๊ตฌํํ๋ฉด ์ฑ๋ฅ์ ์ผ๋ก ์ด๋์ ๋ณผ ์ ์์ ํ๋ฅ ์ด ๋๋ค.
์๋ชป ๋ ํ ์ฌ์ฉ์ ํ์งํ๊ธฐ ์ํด
- ํ ๋ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์ ๋ค๋ก ํ์ธ ๋นํธ๋ฅผ ์ฝ์
๋์ ํ ๋น ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ์ฉ์ ๊ดํ ํต๊ณ ์ ๋ณด๋ฅผ ์์ง
- new๋ delete ์์ ํต๊ณ ์์ง ๊ด๋ จ ์ฝ๋๋ฅผ ๋ฃ๋๋ค.
ํ ๋น ๋ฐ ํด์ ์๋ ฅ์ ๋์ด๊ธฐ ์ํด
- ์๋ฅผ ๋ค์ด ๋ฏธ๋ฆฌ pool์ ์์ฑํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ์๋๊ณ , ์ด pool์ ์ฃผ์๋ค์ ๋ฐํํ ์ ์๋ค.
- easy game server ์ object pool ์ด ์ด ๋ฐฉ์
๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์์ ๊ณต๊ฐ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด
- ์๋ฌด๋๋ ๋ฒ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์๋ ๋ฒ์ฉ์ฑ์ ์ํด ์๋๋ ๋ฌผ๋ก ์ด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋ ์ก์ ๋จน๋๋ค.
- ์ด๋ฅผ ํน์ํ ๊ฒฝ์ฐ์ ๋ํด์ ์๋ํ๋๋ก ๊ตฌํํ๋ฉด ์ด๋ฅผ ์ค์ผ ์ ์๋ค.
- 22. ์ ๋นํ ํํํ ๊ธฐ๋ณธ ํ ๋น์์ ๋ฐ์ดํธ ์ ๋ ฌ ๋์์ ๋ณด์ฅํ๊ธฐ ์ํด
- ์์คํ
์ํคํ
์ฒ์ ๋ฐ๋ผ์ ๋ฐ์ดํธ ์ ๋ ฌ์ ๋ค๋ฅด๊ฒ ํจ์ผ๋ก์จ ์ฑ๋ฅํฅ์์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์์์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ ๊ฐ์ฒด๋ค์ ํ ๊ตฐ๋ฐ์ ๋๋ํ ๋ชจ์ ๋๊ธฐ ์ํด
- ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ค์ ๋์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ด๋ค์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ฉด ํ์ด์ง ํดํธ๋ฅผ ์ค์ผ ์ ์๋ค.
- easy game server ์ object pool ์ด ์ด ๋ฐฉ์
๊ทธ๋๊ทธ๋ ์ํ๋ ๋์์ ์ํํ๋๋ก ํ๊ธฐ ์ํด
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํ๋ ๋์์ new ๋ delete ๊ฐ ํด์ฃผ๊ธธ ์ํ๋ฉด ์ด ๋์์ ํฌํจํ๋๋ก ์ง์ ๊ตฌํ
- 23. ํญ๋ชฉ 51 : new ๋ฐ delete๋ฅผ ์์ฑํ ๋ ๋ฐ๋ผ์ผ ํ ๊ธฐ์กด์ ๊ด๋ก๋ฅผ ์ ์์ ๋์
- 24. new๋ delete๋ฅผ ์ง์ ๊ตฌํ ํ ๋, ๊ธฐ์กด์ ์ด ํจ์๋ค์ด ๋ฐ๋ฅด๋ ๊ด๋ก๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข๋ค.
new์ ๊ฒฝ์ฐ์๋
์ต๋ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ธฐ ์ํด ๋
ธ๋ ฅํด์ผ ํ๋๋ฐ ์ด๋ฅผ ๋ฌดํ ๋ฃจํ๋ก ๋ง๋ ๋ค.
๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ชปํ๋ฉด new-handler๋ฅผ ํธ์ถํด์ผ ํ๋ค.
0๋ฐ์ดํธ์ ๋ํ ์๊ตฌ๋ฅผ ๋ง์กฑํด์ผ ํ๋๋ฐ โ ์ผ๋ฐ์ ์ผ๋ก 1๋ฐ์ดํธ๋ฅผ ํ ๋นํ๊ณ ์ฃผ์๋ฅผ ๋ฐํ
ํด๋์ค ์ ์ฉ ๋ฒ์ ์์๋ ์์ ๋ ํฌ๊ธฐ๋ณด๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๊ตฌ ๋ฐ์ ๋ ์ ๋นํ ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
delete์ ๊ฒฝ์ฐ์๋
๋ ํฌ์ธํฐ๋ฅผ ํด์ ํ๋ ค๋ ๊ฒฝ์ฐ ์๋ฌด๊ฒ๋ ํ์ง ์์์ผ ํ๋ฉฐ
ํด๋์ค ์ ์ฉ ๋ฒ์ ์ธ ๊ฒฝ์ฐ์๋ ์์ ๋ณด๋ค ํฐ ๋ธ๋ก์ ํด์ ๋ฐ๊ธธ ์๊ตฌ ๋ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค โ ํ์ค delete๋ฅผ ํธ์ถํ๋ ๋ฑ
- 25. ํญ๋ชฉ 52 : ์์น ์ง์ new๋ฅผ ์์ฑํ๋ค๋ฉด ์์น์ง์ delete๋ ๊ฐ์ด ์ค๋นํ์.
- 26. ์์น ์ง์ new๋ ๋จ์ด์์ ์ ์ถํ๋ ๋ด์ฉ๊ณผ ๋ค๋ฅด๊ฒ ์ค์ ๋ก๋ ์ถ๊ฐ์ ์ธ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐ๋ ํํ์ new๋ฅผ ๋งํ๋ค.
๋ฌธ์ ๋ ์ด๋ฐ new์ ๊ฒฝ์ฐ์๋ new ์์
์ ์ฑ๊ณตํ๊ณ
๊ฐ์ฒด๋ฅผ ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ๋ง๋๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์์ธ์ ํ์ํ ๋์์ ๋ง๋ค์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ ์ด์ ๋ ์ปดํ์ผ๋ฌ๋ ๊ฐ์ฒด ์์ฑ๊ณผ์ ์์ ์์ธ๋ฅผ ํ์ธํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ new์ ๋์๋๋ delete๋ก ๊ทธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์์น ์ง์ new๋ฅผ ๋ง๋ค์๋ค๋ฉด ์ด์ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ delete๋ฅผ ๋ง๋ค์ด ๋์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฃผ์ํ ์ ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ ์ํ new๊ฐ ๊ธฐ์กด์ ํ์ค ํํ new๋ฅผ ๊ฐ๋ฆฌ์ง ์๋๋ก ํด์ผ ํ๋ค๋ ์ ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ๊ฐ์ ํ์คํ new ํํ์ ํจ์๋ฅผ ์๋ก ์ ์ธํ๊ณ , ๊ทธ ๋ด๋ถ์์ ํ์คํ new๋ฅผ ํธ์ถํ๋๋ก ํ๋ค.
- 27. ํญ๋ชฉ 53 : ์ปดํ์ผ๋ฌ์ ๊ฒฝ๊ณ ๋ฅผ ์ง๋์น์ง ๋ง์.
- 28. ์ปดํ์ผ๋ฌ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ํ๋ ๊ฒ์๋ ๋ค ์ด์ ๊ฐ ์๋ค.
๋ฌด์ํ์ง ๋ง์.
๊ฒฝ๊ณ ์์ค์ ์ต๋๋ก ๋๊ณ ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ
ํ์ง๋ง ์ปดํ์ผ๋ฌ์ ๊ฒฝ๊ณ ๋ง ๋ฏฟ์ด์๋ ์ ๋๋ค. ์ปดํ์ผ๋ฌ ๋ณ๋ก ์ ๊ณตํ๋ ๊ฒฝ๊ณ ๊ฐ ๋ค๋ฅผ ์ ์๋ค.
๊ฒฐ๊ตญ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ํด์ผ ๋๋ค.
- 29. ํญ๋ชฉ 54 : TR1์ ํฌํจํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ตฌ์ฑ์์์ ํธ์ํ ์น๊ตฌ๊ฐ ๋์.
- 30. TR1์ ์ผ์ข
์ ์
๋ฒ ์๊ณ ์ ๊ฐ์ ๊ฒ - ์์ผ๋ก C++์ ํ์ค์ผ๋ก ์ฑ์ฉ๋ ๋ด์ฉ๋ค
๊ทธ ๋ด์ฉ์๋ ์ค๋งํธ ํฌ์ธํฐ๋ ์ ๊ทํํ์๊ณผ ๊ฐ์ ์ ์ฉํ ๊ธฐ๋ฅ๋ค์ด ๋ง์ด ์๋ค.
์ฃผ์ ํ ๊ฒ์ TR1์ ์ด๋๊น์ง๋ ๋ช
์ธ์ผ ๋ฟ ๊ตฌํ์ด ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฐ ๋ช
์ธ๋ฅผ ๋ง์กฑํ๋ ๊ตฌํ์ ์ฐพ์์ผ ํ๋ค.
(์ง๊ธ์ C++12๊ฐ ๋์์ผ๋ ์ข ๋ค๋ฅธ ์ด์ผ๊ธฐ๊ฐ ๋๋ ค๋)
- 31. ํญ๋ชฉ 55 : Booๅญๆ่ฆช! ๋ถ์คํธ๋ฅผ ๋ ์ฌ๋ฌ๋ถ ๊ฐ๊น์ด์
- 32. ๋ถ์คํธ๋ C++์ ๊ฐ๋ ฅํ ์ํฅ๋ ฅ์ ๊ฐ์ง๋ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ ๋จ์ฒด
์ฒด๊ณ์ ์ธ ์์คํ
์ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ํ๊ณ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๋ฌด๋ฃ์ธ ์คํ ์์ค๋ก ์ ๊ณต
ํ์ค์ ์ฑ์ฉ๋์ง ์์ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์์ผ๋ฏ๋ก ์ฐธ๊ณ ํ๋ฉด ์ข๋ค.