[CS์ง€์‹] ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•˜์—ฌ

2022. 6. 12. 12:48ใ†๐Ÿ–ฅ CS ์ง€์‹

 

๋ฉ”๋ชจ๋ฆฌ์˜ ๊ตฌ์กฐ

 

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„  ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ณ€์ˆ˜๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด์— ์šด์˜์ฒด์ œ๋“ค์€ ์—ฌ๋Ÿฌ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ์€ 4๊ฐ€์ง€ ๋Œ€ํ‘œ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›์•„์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

1. ์ฝ”๋“œ ์˜์—ญ

2. ๋ฐ์ดํ„ฐ ์˜์—ญ

3. ํž™ ์˜์—ญ

4. ์Šคํƒ ์˜์—ญ

 

 

 

 

 

 

 

 

 

1. ์ฝ”๋“œ ์˜์—ญ

 

์ฝ”๋“œ ์˜์—ญ์€ ๋ง ๊ทธ๋Œ€๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ์ด๋‹ค. Text ์˜์—ญ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค.

CPU๋Š” ์ฝ”๋“œ ์˜์—ญ์— ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

2. ๋ฐ์ดํ„ฐ ์˜์—ญ

 

ํ”„๋กœ๊ทธ๋žจ์˜ ์ „์—ญ ๋ณ€์ˆ˜(global variable), ์ •์  ๋ณ€์ˆ˜(static variable)๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒํ•˜๋ฉด ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค. 

 

* ์ „์—ญ ๋ณ€์ˆ˜: ํ”„๋กœ๊ทธ๋žจ ๋‚ด ์–ด๋Š ์ง€์—ญ์—์„œ๋“  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜. ํ”Œ๋กœ๊ทธ๋žจ ์ข…๋ฃŒ ์ „๊นŒ์ง€ ์†Œ๋ฉธ๋˜์ง€ ์•Š์Œ.

* ์ •์  ๋ณ€์ˆ˜: ์ „์—ญ ๋ณ€์ˆ˜ ๊ฐœ์„ ๋œ ๋ฒ„์ „. ๋˜‘๊ฐ™์ด ์–ด๋””์„œ๋“  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™”๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ„.

 

 

 

 

 

3. ํž™ ์˜์—ญ

 

๋ฉ”๋ชจ๋ฆฌ์˜ ํž™(heap) ์˜์—ญ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ํž™ ์˜์—ญ์—์„  ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น์€ ๋‹ค์–‘ํ•œ ํ•„์š” ์ด์œ ์— ์˜ํ•ด ๊ผญ ํ™œ์šฉ๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ์•„๊ฐ€๋Š” ์‹œ์ (Run time)์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

4. ์Šคํƒ ์˜์—ญ

 

ํž™ ์˜์—ญ๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ์ปดํŒŒ์ผ ํƒ€์ž„(์ฝ”๋“œ๊ฐ€ ์ปดํ“จํ„ฐ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜๋Š” ์‹œ์ )์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ๊ด€๊ณ„๋˜๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๊ณผ ํ•จ๊ป˜ ํ• ๋‹น๋˜์—ˆ๋‹ค๊ฐ€, ํ˜ธ์ถœ์ด ์™„๋ฃŒ๋˜๋ฉด ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์Šคํƒ์€ push(ํ‘ธ์‹œ) ๋™์ž‘์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์™”๋‹ค๊ฐ€, pop(ํŒ) ๋™์ž‘์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž…์„ ์ถœ(LIFO) ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฉฐ ๊ฐ€์žฅ ๋นจ๋ฆฌ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ์ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์˜์—ญ์€ ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์˜์—ญ์œผ๋กœ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

 

[๋ฌผ์Œ] ๋„๋Œ€์ฒด ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ๋กœ ํ• ๋‹น๋œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋ฌด์—‡์ด์ฃ ?

[๋‹ต๋ณ€] ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•˜์‹ค ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋‚ฎ์€ ์ฃผ์†Œ๋Š” ๊ทธ์ € ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์ชฝ ๋ถ€๋ถ„, ๋†’์€ ์ฃผ์†Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์•„๋ž˜์ชฝ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํž™ ์˜์—ญ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ๋‚˜๊ฐ€๊ณ , ์Šคํƒ ์˜์—ญ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์•„๋ž˜์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„œ๋กœ์˜ ์‹œ์ž‘์ ์ด ๋‹ค๋ฅธ ๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„ญ๋‹ˆ๋‹ค. ๋‘ ์˜์—ญ ๋ชจ๋‘ ๋˜‘๊ฐ™์€ ๊ณณ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋‘ ์˜์—ญ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์–ฝํžˆ๊ณ ์„คํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ตœ๋Œ€ํ•œ ๋‘ ์˜์—ญ์ด ๋งŒ๋‚˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€๋” Stack overflow, Hip overflow ์—๋Ÿฌ๊ฐ€ ๋œฐ ๋•Œ๊ฐ€ ์žˆ์„ ํ…๋ฐ, ์ด๋Š” ์Šคํƒ์ด ํž™ ์˜์—ญ์„ ์นจ๋ฒ”ํ–ˆ์Œ/ ํž™์ด ์Šคํƒ ์˜์—ญ์„ ์นจ๋ฒ”ํ–ˆ์Œ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.