hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ

C++ ์ •๋ฆฌ - 10 (ํฌ์ธํ„ฐ -2 ํฌ์ธํ„ฐ์™€ ์ˆ˜, new๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…, delete, ๋™์  ๋ฐฐ์—ด)

2020. 1. 11. 23:18
728x90

ํฌ์ธํ„ฐ์˜ ์œ„ํ—˜
long * fellow //longํ˜•์„ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ ์ƒ์„ฑ
*fellow=223323; //์–ด๋”˜์ง€์— ๋ชจ๋ฅด๋Š” ๊ณณ์— ๊ฐ’ ์ €์žฅ

fellow๊ฐ€ ์–ด๋””๋ฅผ ์ง€์‹œํ•˜๋Š”์ง€ ์ดˆ๊ธฐํ™”๋ฅผ ์‹œํ‚ค์ง€ ์•Š์Œ

ํฌ์ธํ„ฐ์™€ ์ˆ˜
ํฌ์ธํ„ฐ๋Š” ๊ฐœ๋…์ ์œผ๋กœ ์ •์ˆ˜ํ˜•๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐํ˜•์ด๋‹ค.
int * pt;
pt=0xB8000000; //๋ฐ์ดํ„ฐํ˜• ๋ถˆ์ผ์น˜
์‹ค์ œ๋กœ๋Š” ์„ธ๊ทธ๋จผํŠธ์™€ ์˜คํ”„์…‹์ด ๊ฒฐํ•ฉ๋œ ๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ

int * pt;
pt=(int *)0xB00000; //๋ฐ์ดํ„ฐํ˜• ์ผ์น˜

new๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…
ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ์— intํ˜• ๊ฐ’์„ ์ด๋ฆ„์ด ์—†๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€์ž…ํ•˜๊ณ  ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๊ทธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•

  1. ์–ด๋–ค ๋ฐ์ดํ„ฐํ˜•์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์›ํ•˜๋Š”์ง€ new์—ฐ์‚ฐ์ž์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.

  2. new์—ฐ์‚ฐ์ž๋Š” ์•Œ๋งž์€ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์ฐพ์•„๋‚ธ ํ›„ ๊ทธ ๋ธ”๋ก์˜ ์ฃผ์†Œ ๋ฆฌํ„ด

  3. ์ด ์ฃผ์†Œ๋ฅผ ํฌ์ธํ„ฐ์— ๋Œ€์ž…

int * pn = new int; //intํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์•Œ๋ฆผ

  1. new์—ฐ์‚ฐ์ž๋Š” ๋’ค๋”ฐ๋ฅด๋Š” ๋ฐ์ดํ„ฐํ˜•์„ ๋ณด๊ณ , ๋ช‡ ๋ฐ”์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ์ง€ ํŒŒ์•…

  2. ์ ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐพ์•„ ํ•„์š”ํ•œ ๋งŒํผ ๋ธ”๋ก์— ๋Œ€์ž… ํ›„ ๊ทธ ์ฃผ์†Œ ๋ฆฌํ„ด

  3. ๋ฆฌํ„ด๋˜๋Š” ์ฃผ์†Œ๋Š” pn์— ๋Œ€์ž…๋จ. *pn์€ ์ฃผ์†Œ์— ์ €์žฅ๋˜๋Š” ๊ฐ’

๋‹จ์ผ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด ํ›„ ๊ทธ ์ฃผ์†Œ๋ฅผ ํฌ์ธํ„ฐ์— ๋Œ€์ž…ํ•˜๋Š” ์ผ๋ฐ˜์  ํ˜•์‹
type * pointer_name = new typename;

์ ๋‹นํ•œ ๋ฐ์ดํ„ฐํ˜•์„ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์ด๋ฏธ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ,
ํฌ์ธํ„ฐ๋ฅผ ์ƒˆ๋กœ ์„ ์–ธํ•  ํ•„์š” ์—†์ด ๊ทธ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

delete๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ
int * ps = new int; //new๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…
... //๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
delete ps; //delete๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ, ps ์ž์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€์ง„ ์•Š์Œ

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด new๋ฅผ ์‚ฌ์šฉํ•œ ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ ๋‚˜์ค‘์— delete๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

์ด๋ฏธ ํ•ด์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๋‹ค์‹œ ํ•ด์ œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ
๋˜ํ•œ ๋ณดํ†ต์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ๋Œ€์ž…ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” delete๋กœ ํ•ด์ œ ๋ถˆ๊ฐ€
int * ps = new int // O
delete ps; //O
delete ps; //X
int jugs = 5; //O
int * pi = &jugs; //O
delete pi; //X

delete๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, new๋กœ ๋Œ€์ž…ํ•œ ๋ฉ”๋ชจ๋ฆฌ์— delete ์‚ฌ์šฉ
new๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์— ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋™์ผํ•œ ์ฃผ์†Œ์— ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ

int * ps = new int;//๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž… ํ›„ ์ฒซ ๋ฒˆ์งธ ํฌ์ธํ„ฐ๋กœ ์ง€์‹œ
int * pg = ps; //๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€์‹œํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํฌ์ธํ„ฐ ์„ค์ •
delete pg; //๋‘ ๋ฒˆ์งธ ํฌ์ธํ„ฐ์— delete ์‚ฌ์šฉ

new๋ฅผ ์‚ฌ์šฉํ•œ ๋™์  ๋ฐฐ์—ด์˜ ์ƒ์„ฑ
๋ฐฐ์—ด ์›์†Œ์˜ ๋ฐ์ดํ„ฐํ˜•๊ณผ ๊ฐœ์ˆ˜๋ฅผ new์— ์•Œ๋ ค์ฃผ๋ฉด ๋จ
int * psome = new int[10];
new์—ฐ์‚ฐ์ž๋Š” ๊ทธ ๋ธ”๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ๋ฅผ ๋ฆฌํ„ดํ•จ
delete []psome;
๋Œ€๊ด„ํ˜ธ[]๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฏ€๋กœ ํฌ์ธํ„ฐ๊ฐ€ ์ง€์‹œํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ ํ•ด์ œ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฐฐ์—ด ์ „์ฒด๊ฐ€ ํ•ด์ œ๋จ

new์™€ delete๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ทœ์น™

  1. new๋กœ ๋Œ€์ž…ํ•˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋Š” delete๋กœ ํ•ด์ œ X

  2. ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์—ฐ๋‹ฌ์•„ ๋‘ ๋ฒˆ delete ํ•ด์ œ X

  3. new[]๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…ํ•œ ๊ฒฝ์šฐ delete[]๋กœ ํ•ด์ œ

  4. new๋ฅผ ๋Œ€๊ด„ํ˜ธ ์—†์ด ์‚ฌ์šฉํ–ˆ์œผ๋ฉด delete๋„ ๋Œ€๊ด„ํ˜ธ ์—†์ด ์‚ฌ์šฉ

  5. ๋„ ํฌ์ธํ„ฐ์—๋Š” delete๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•จ

๋™์  ๋ฐฐ์—ด์„ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Œ€์ž…ํ•˜๊ณ , ๊ทธ ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํฌ์ธํ„ฐ์— ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜ ํ˜•์‹
type_name * pointer_name = new type_name[num_elements];
์ด ๊ตฌ๋ฌธ์€ type_nameํ˜•์˜ ์›์†Œ๋ฅผ newe_elements ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ๋Œ€์ž…ํ•˜๊ณ , ๊ทธ ๋ธ”๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ์ฃผ์†Œ๋ฅผ pointer_name์— ๋Œ€์ž…ํ•จ
๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด pointer_name์„ ๋ฐฐ์—ด ์ด๋ฆ„์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋™์  ๋ฐฐ์—ด์˜ ์‚ฌ์šฉ
int * psome = new int[10];
psome์ด ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์—,
*psome์€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ์˜ ๊ฐ’์ด ๋จ
*psome ๋Œ€์‹ ์— psome[0]์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ (C์™€ C++๊ฐ€ ๋ฐฐ์—ด์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ)

728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • C++ ์ •๋ฆฌ - 12 (์ž๋™ ๊ณต๊ฐ„, ์ •์  ๊ณต๊ฐ„, ๋™์  ๊ณต๊ฐ„, ๋ณ€์ˆ˜ํ˜•์˜ ์กฐํ•ฉ, Vector, array ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค)
    • C++ ์ •๋ฆฌ - 11 (ํฌ์ธํ„ฐ -3 ํฌ์ธํ„ฐ์™€ ๋ฐฐ์—ด ์ด๋ฆ„๊ฐ„์˜ ์ฐจ์ด, ํฌ์ธํ„ฐ,๋ฐฐ์—ด,ํฌ์ธํ„ฐ ์—ฐ์‚ฐ, ๋ฐฐ์—ด์˜ ์ฃผ์†Œ, ํฌ์ธํ„ฐ์™€ ๋ฌธ์ž์—ด, ๋ฌธ์ž์—ด์˜ ๋ณต์‚ฌ๋ณธ, new๋ฅผ ์‚ฌ์šฉํ•œ ๋™์  ๊ตฌ์กฐ์ฒด)
    • C++ ์ •๋ฆฌ -9 (ํฌ์ธํ„ฐ -1)
    • C++ ์ •๋ฆฌ -8 (๊ณต์šฉ์ฒด, ์—ด๊ฑฐ์ฒด, ์—ด๊ฑฐ์ฒด์˜ ๊ฐ’ ๋ฒ”์œ„)
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”