ํฌ์ธํฐ์ ์ํ
long * fellow //longํ์ ์ง์ํ๋ ํฌ์ธํฐ ์์ฑ
*fellow=223323; //์ด๋์ง์ ๋ชจ๋ฅด๋ ๊ณณ์ ๊ฐ ์ ์ฅ
fellow๊ฐ ์ด๋๋ฅผ ์ง์ํ๋์ง ์ด๊ธฐํ๋ฅผ ์ํค์ง ์์
ํฌ์ธํฐ์ ์
ํฌ์ธํฐ๋ ๊ฐ๋
์ ์ผ๋ก ์ ์ํ๊ณผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐํ์ด๋ค.
int * pt;
pt=0xB8000000; //๋ฐ์ดํฐํ ๋ถ์ผ์น
์ค์ ๋ก๋ ์ธ๊ทธ๋จผํธ์ ์คํ์
์ด ๊ฒฐํฉ๋ ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์
int * pt;
pt=(int *)0xB00000; //๋ฐ์ดํฐํ ์ผ์น
new๋ฅผ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ ๋์
ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋์์ intํ ๊ฐ์ ์ด๋ฆ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์
ํ๊ณ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํด ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ์๋ก์ด ๋ฐฉ๋ฒ
-
์ด๋ค ๋ฐ์ดํฐํ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ํ๋์ง new์ฐ์ฐ์์๊ฒ ์๋ ค์ค๋ค.
-
new์ฐ์ฐ์๋ ์๋ง์ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฐพ์๋ธ ํ ๊ทธ ๋ธ๋ก์ ์ฃผ์ ๋ฆฌํด
-
์ด ์ฃผ์๋ฅผ ํฌ์ธํฐ์ ๋์
int * pn = new int; //intํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค๊ณ ์๋ฆผ
-
new์ฐ์ฐ์๋ ๋ค๋ฐ๋ฅด๋ ๋ฐ์ดํฐํ์ ๋ณด๊ณ , ๋ช ๋ฐ์ดํธ๊ฐ ํ์ํ์ง ํ์
-
์ ๋นํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์ ํ์ํ ๋งํผ ๋ธ๋ก์ ๋์ ํ ๊ทธ ์ฃผ์ ๋ฆฌํด
-
๋ฆฌํด๋๋ ์ฃผ์๋ 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๋ฅผ ์ฌ์ฉํ ๋ ๊ท์น
-
new๋ก ๋์ ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ delete๋ก ํด์ X
-
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ฐ๋ฌ์ ๋ ๋ฒ delete ํด์ X
-
new[]๋ก ๋ฉ๋ชจ๋ฆฌ ๋์ ํ ๊ฒฝ์ฐ delete[]๋ก ํด์
-
new๋ฅผ ๋๊ดํธ ์์ด ์ฌ์ฉํ์ผ๋ฉด delete๋ ๋๊ดํธ ์์ด ์ฌ์ฉ
-
๋ ํฌ์ธํฐ์๋ 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++๊ฐ ๋ฐฐ์ด์ ๊ตฌํํ ๋ ๋ด๋ถ์ ์ผ๋ก๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ)