1ํ•™๋…„ (2023)/C ์–ธ์–ด

[C] Study: ๋™์  ๋ฉ”๋ชจ๋ฆฌ - (1) ๋™์  ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ž€?

waterproof 2023. 8. 19. 16:07

 

 

 


(1) ๋™์  ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ž€?

 

 

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

 

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

 

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

 

 ์˜ˆ๋ฅผ ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋ฉด ์ •์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

 

int sarray[10];

 

 ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ์žฅ์ : ๊ฐ„ํŽธํ•˜๋‹ค.

 

 ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์˜ ๋‹จ์ : ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ”„๋กœ๊ทธ๋žจ์ด ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž…๋ ฅ์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ: ๋งŒ์•ฝ ์ฒ˜์Œ์— ๊ฒฐ์ •๋œ ํฌ๊ธฐ๋ณด๋‹ค ๋” ๋งŽ์€ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ๊ฒƒ์ด๊ณ , ๋” ์ ์€ ์ˆ˜์˜ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋  ๊ฒƒ์ด๋‹ค.

 

 ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(dynamic memory allocation): ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ๋„์ค‘์— ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š” ๊ฒƒ

 

int *darray = malloc(10 * sizeof(int));

 

 ์œ„์˜ ๋ฌธ์žฅ์—์„œ๋Š” 10๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ ๋™์ ์œผ๋กœ ํ• ๋‹น๋ฐ›๊ณ  ์žˆ๋‹ค.

 

 ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์—์„œ๋Š” ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๊ณ , ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์‹œ์Šคํ…œ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐ˜๋‚ฉํ•œ๋‹ค. ํ•„์š”ํ•œ ๋งŒํผ๋งŒ ํ• ๋‹น๋ฐ›๊ณ , ๋˜ ํ•„์š”ํ•œ ๋•Œ์— ์‚ฌ์šฉํ•˜๊ณ  ๋ฐ˜๋‚ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งค์šฐ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋Š” malloc() ๊ณ„์—ด์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋‹ค๊ฐ€ malloc() ํ•จ์ˆ˜๋ฅผ ๋งŒ๋‚˜๋ฉด ์šด์˜ ์ฒด์ œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด์„œ ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋™์  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋œ๋‹ค.