PROGRAMMING/C & C++

9. [C / C++] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์™€ ๋™์  ํ• ๋‹น (2)

๐’ฎ๐’ฎ๐ผ๐’ฉ_0 2019. 5. 21. 08:55

 

1. ๋™์ ํ• ๋‹น

 

ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์ •์ ๊ณผ ๋™์  2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ž€

ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฒฐ์ •๋˜๋ฉฐ

ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋„์ค‘์— ํฌ๊ธฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ex) ์ง€์—ญ๋ณ€์ˆ˜, ์ •์ ๋ฐฐ์—ด

 

๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ž€

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ๋„์ค‘์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๊ณ , ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜๋‚ฉํ•ฉ๋‹ˆ๋‹ค.

๋™์  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์˜ ์žฅ์ ์€ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š” ์‹œ์ ์„

ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

 

์ฃผ์˜ํ•ด์•ผํ•  ์ ์€ 

๋จผ์ € ์–ผ๋งˆ๋‚˜ ํ• ๋‹น์„ ๋ฐ›์„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๊ณ ,

๋ฐ˜๋“œ์‹œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜๋‚ฉ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํž™ ์˜์—ญ์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.)

 

 


 

 

2. C์–ธ์–ด์—์„œ์˜ ๋™์ ํ• ๋‹น

 

C์–ธ์–ด์—์„œ ๋™์ ํ• ๋‹น์„ ํ•  ์ˆ˜์žˆ๋Š” ํ•จ์ˆ˜๋Š”

malloc()๊ณผ calloc()์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. malloc

(์ž๋ฃŒํ˜•*)malloc(๊ฐฏ์ˆ˜ * sizeof(์ž๋ฃŒํ˜•))

์ง€์ •๋œ ํฌ๊ธฐ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋™์ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์†Œ๋ฉธ์€ free() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด์„œ 100๊ฐœ์˜ intํ˜• ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

malloc()์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด null์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ,

ํ•ญ์ƒ ๋ฐ˜ํ™˜๊ฐ’์ด null์ด ์•„๋‹Œ์ง€ ์ฒดํฌํ•˜์—ฌ์•„ ํ•ฉ๋‹ˆ๋‹ค.

 

malloc()์€ ํšจ์œจ์„ฑ์„ ์œ„ํ•˜์—ฌ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ์ด๋ผ๋„ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ฒ˜์Œ์—๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด ๋“ค์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ ,

์ดํ›„ ์ž์‹ ์ด ์›ํ•˜๋Š” ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

2. calloc

(์ž๋ฃŒํ˜•*)calloc(ํ•ญ๋ชฉ์˜ ๊ฐฏ์ˆ˜, ํ•ญ๋ชฉ์˜ ํฌ๊ธฐ)

calloc()์€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ดˆ๊ธฐํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์–ป์„ ๋•Œ๋Š” calloc()์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋ฐ”์ดํŠธ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ํ•ญ๋ชฉ ๋‹จ์œ„๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

 


 

 

3. C++์—์„œ์˜ ๋™์ ํ• ๋‹น

์ž๋ฃŒํ˜•* pTemp = new ์ž๋ฃŒํ˜•

์ž๋ฃŒํ˜•* pArr = new[๊ฐฏ์ˆ˜]

 

delete pTemp

delete[] pArr

 

C++์—์„œ๋Š” new์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋™์ ํ• ๋‹น์„ ์ˆ˜ํ–‰ํ•˜๊ณ ,

delete์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด์„œ ์†Œ๋ฉธ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 


 

 

4. new์™€ malloc/calloc์˜ ์ฐจ์ด์ 

 

์ฒซ ๋ฒˆ์งธ 

malloc(), calloc()์€ ํ•จ์ˆ˜(C)์ด๊ณ ,

new๋Š” ์—ฐ์‚ฐ์ž(C++)์ž…๋‹ˆ๋‹ค.

 

๋‘ ๋ฒˆ์งธ

ํด๋ž˜์Šค๋ฅผ ๋™์ ํ• ๋‹นํ•  ์‹œ,

new ์—ฐ์‚ฐ์ž๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋งŒ,

malloc๊ณผcalloc์€ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.