Skip to content

โ† ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๊ฐ€์ด๋“œ ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

๐Ÿ”ด C++ ์ƒ์„ธ ๊ฐ€์ด๋“œ โ€‹

"ํ•˜๋“œ์›จ์–ด ๋ฐ”๋กœ ์œ„์—์„œ ์ดˆ๋‹น ์ˆ˜์–ต ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๋Š” ์ ˆ๋Œ€ ์„ฑ๋Šฅ์˜ ๊ฐ•์ž์ด์ž ์ปดํ“จํ„ฐ ๊ณตํ•™์˜ ๋ฟŒ๋ฆฌ"


๐Ÿ’ก 1. 30๋…„์ฐจ ์„ ๋ฐฐ์˜ ์‰ฌ์šด ์„ค๋ช… โ€‹

์ตœ์‹  ์ธ๊ณต์ง€๋Šฅ ๋ฒˆ์—ญ๊ธฐ, ํ™”๋ คํ•œ ๊ทธ๋ž˜ํ”ฝ์„ ์ž๋ž‘ํ•˜๋Š” ๋Œ€ํ˜• 3D ๊ฒŒ์ž„, ์ž์œจ์ฃผํ–‰ ์ž๋™์ฐจ ์„ผ์„œ ๋“ฑ ๋‹จ 0.001์ดˆ์˜ ๋”œ๋ ˆ์ด๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” "๊ทน๋‹จ์˜ ์‹ค์‹œ๊ฐ„ ๊ณ ์„ฑ๋Šฅ ์—ฐ์‚ฐ" ์ด ํ•„์š”ํ•œ ๊ณณ์—๋Š” ์˜ˆ์™ธ ์—†์ด C++ ์ด ์“ฐ์ž…๋‹ˆ๋‹ค.

C++์€ ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ(RAM)์™€ ํ•˜๋“œ์›จ์–ด ๋ถ€ํ’ˆ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•œ ๋•€ ํ•œ ๋•€ ์ง์ ‘ ์ง€๋ฐฐํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์ฒ˜๋Ÿผ ๋’ค์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชฐ๋ž˜ ์ฒญ์†Œํ•ด์ฃผ๋Š” ๋น„์„œ(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ)๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ ๋‚ญ๋น„๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๋ฌธ๋ฒ•์ด ๋ณต์žกํ•˜๊ณ , ํฌ์ธํ„ฐ(Pointer)๋ผ๋Š” ์•…๋ช… ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ œ์–ด ๊ฐœ๋…์„ ๋ฐ˜๋“œ์‹œ ๋งˆ์Šคํ„ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋”ฉ ์‹ค์ˆ˜๋ฅผ ํ•˜๋ฉด ์ปดํ“จํ„ฐ ์ „์ฒด๊ฐ€ ๋ธ”๋ฃจ์Šคํฌ๋ฆฐ์„ ๋„์šฐ๊ฑฐ๋‚˜ ํŠ•๊ธฐ๋Š” ๋“ฑ ๊ฐ€ํ˜นํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์˜ค์ง€๋งŒ, ์ปดํ“จํ„ฐ ๊ณตํ•™์˜ ๋ฐ‘๋ฐ”๋‹ฅ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๊นŠ์ด ์ดํ•ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐœ๋ฐœ์ž์˜ ๊ทผ์œก ๊ฐ™์€ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • ๋น„์œ ํ•˜์ž๋ฉด: ์˜คํ†  ๋งค๋‰ด์–ผ ์žฅ์น˜๊ฐ€ ํ•˜๋‚˜๋„ ์—†๊ณ  ๋ณ€์† ๊ธฐ์–ด์™€ ์กฐํ–ฅ ์žฅ์น˜ ํ•˜๋‚˜๊นŒ์ง€ ์šด์ „์ž์˜ ๋ฌผ๋ฆฌ์  ๊ฐ๊ฐ์œผ๋กœ ์™„๋ฒฝํ•˜๊ฒŒ ์ œ์–ดํ•ด์•ผ ํ•˜๋Š” ์•ผ์„ฑ์ ์ธ F1 ํฌ๋ฎฌ๋Ÿฌ ๋ ˆ์ด์‹ฑ ์นด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๐Ÿ› ๏ธ 2. ์–ด๋””์— ์ฃผ๋กœ ์“ฐ์ด๋‚˜์š”? โ€‹

  1. ์ดˆ๊ณ ์„ฑ๋Šฅ 3D ๊ฒŒ์ž„ ์—”์ง„: ์–ธ๋ฆฌ์–ผ ์—”์ง„(Unreal Engine), ๋Œ€ํ˜• PC/์ฝ˜์†” 3D ๊ฒŒ์ž„ ๊ทธ๋ž˜ํ”ฝ ์—”์ง„ ๋ฐ ๋ฌผ๋ฆฌ ์—”์ง„ ๊ฐœ๋ฐœ.
  2. ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด & OS: ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜, ์šด์˜์ฒด์ œ(Windows ์ฝ”์–ด ๋“ฑ), ์ž์œจ์ฃผํ–‰ ์„ผ์„œ ๋ฐ์ดํ„ฐ ์ดˆ๊ณ ์† ์‹ค์‹œ๊ฐ„ ์ œ์–ด.
  3. ์ธ๊ณต์ง€๋Šฅ(AI) ์ฝ”์–ด ์—ฐ์‚ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: ํŒŒ์ด์ฌ ๋ฐ‘์—์„œ ํ…์„œํ”Œ๋กœ์šฐ๋‚˜ ํŒŒ์ดํ† ์น˜ ๋“ฑ ๋ฌด๊ฑฐ์šด ๋”ฅ๋Ÿฌ๋‹ ์—ฐ์‚ฐ์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋’ท๋‹จ ํ•˜๋“œ์›จ์–ด ์ˆ˜ํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค.

โš–๏ธ 3. ์žฅ์ ๊ณผ ๋‹จ์  (์„ ๋ฐฐ์˜ ์†”์ง ํ•œ๋งˆ๋””) โ€‹

  • ์žฅ์  (ํƒ€์˜ ์ถ”์ข…์„ ๋ถˆํ—ˆํ•˜๋Š” ์„ฑ๋Šฅ):
    • ๊ทนํ•œ์˜ ํ•˜๋“œ์›จ์–ด ์†๋„ ์ œ์–ด: ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง์ ‘ ์ชผ๊ฐœ๊ณ  ๋‹ค์Šค๋ฆฌ๋ฉฐ CPU ์ฝ”์–ด๋ฅผ ์ตœ๋Œ€๋กœ ๊ตด๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฌด์‹œ๋ฌด์‹œํ•œ ํผํฌ๋จผ์Šค๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
    • ๊นŠ์€ ๊ธฐ๋ณธ๊ธฐ ์ฒด๋“: ํฌ์ธํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ง„์งœ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๋งˆ์Šคํ„ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹จ์  (์‚ด๋ฒŒํ•œ ๋‚œ์ด๋„์™€ ๋””๋ฒ„๊น…):
    • ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ(Leak)์˜ ์œ„ํ—˜: ๋™์  ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ•ด์ œํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํ“จํ„ฐ ๋žจ์„ ์ข€๋จน๋Š” ๋ฌด์‹œ๋ฌด์‹œํ•œ ๋ˆ„์ˆ˜ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๊ดดํ•˜๊ฒŒ ๋ณต์žกํ•œ ๋ฌธ๋ฒ•: ํ…œํ”Œ๋ฆฟ(Template), ๋‹ค์ค‘ ์ƒ์† ๋“ฑ ์—ญ์‚ฌ์ ์œผ๋กœ ๋ˆ„์ ๋œ ๋ฌธ๋ฒ• ์ฒด๊ณ„๊ฐ€ ๊ฐ€์žฅ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๋‚œํ•ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ 4. ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ ์ฝ”๋“œ โ€‹

C++์—์„œ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์‹ค์ œ '์ฃผ์†Œ๊ฐ’'์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ(Pointer) ๊ธฐ๋ณธํ˜•์ž…๋‹ˆ๋‹ค.

cpp
#include <iostream>

int main() {
    int normalValue = 99;
    
    // 1. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ *ptr์€ ๋ณ€์ˆ˜์˜ '๊ฐ’'์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ '์ฃผ์†Œ'๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    int* ptr = &normalValue; // & ๊ธฐํ˜ธ๋Š” ์ฃผ์†Œ๊ฐ’์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

    std::cout << "๋ณ€์ˆ˜์˜ ์‹ค์ œ ๊ฐ’: " << normalValue << std::endl;
    std::cout << "๋ณ€์ˆ˜๊ฐ€ ์œ„์น˜ํ•œ ๋žจ(RAM) ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ: " << ptr << std::endl;
    
    // 2. ์ฃผ์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.
    *ptr = 300; 
    std::cout << "ํฌ์ธํ„ฐ๋ฅผ ํ†ตํ•ด ๋ฐ”๋€ ๋ณ€์ˆ˜ ๊ฐ’: " << normalValue << std::endl;

    return 0;
}

๐ŸŽฏ 5. ์ดˆ๋ณด์ž ์ถ”์ฒœ ๊ณต๋ถ€ ๋ฐฉํ–ฅ โ€‹

  1. ๋ฐ˜๋“œ์‹œ C์–ธ์–ด์˜ ํฌ์ธํ„ฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ์ดํ•ดํ•˜๊ณ  C++ ๊ฐ์ฒด ์ง€ํ–ฅ ๋ฐ ์ตœ์‹  ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ฐœ๋…์œผ๋กœ ๋„˜์–ด๊ฐ€์…”์•ผ ๊ธธ์„ ์žƒ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๋„๊ตฌ์˜ ๋„์›€์„ ์ ๊ทน ๋ฐ›์œผ์‹ญ์‹œ์˜ค. ๋””๋ฒ„๊ฑฐ(Debugger) ์‚ฌ์šฉ๋ฒ•์„ ์ตํ˜€์„œ ๋ผ์ธ๋ฐ”์ด๋ผ์ธ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•ด๋ณด๋Š” ํ›ˆ๋ จ์ด ์ƒ๋ช…์„ ์ž…๋‹ˆ๋‹ค.
  3. ์ฝ˜์†” ์ฐฝ์—์„œ ๋Œ์•„๊ฐ€๋Š” ๊ฐ„๋‹จํ•œ ๊ฐ€๊ณ„๋ถ€, ์ฃผ์†Œ๋ก ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๊ฐ™์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋„๊ตฌ๋ฅผ ์ง์ ‘ ์งœ๋ณด๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํŒŒ๊ดดํ•˜๋Š” ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์—ฐ์Šตํ•˜์‹ญ์‹œ์˜ค.

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ง€์‹DB โ€” ๋” ๋‚˜์€ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์œ„ํ•ด