๊ฐœ๋ฐœ ์‹œ๋‚˜๋ธŒ๋กœ

c++ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

youngdeok 2024. 4. 21. 14:20

1. ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋‹ค ๋ณด๋ฉด code, data, stack, heap ์ด๋ผ๋Š” ๋ง์ด ์–ด์ƒ‰ํ•˜์ง€๋Š” ์•Š์œผ์‹ค ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์—ฌ๋Ÿฌ ์˜์—ญ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ ์šด์˜ ์ฒด์ œ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๋ฉฐ, ๊ฐ๊ฐ์˜ ์˜์—ญ์€ ํŠน์ •ํ•œ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

 

๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

code ์˜์—ญ:

  • ๋ง๊ทธ๋Œ€๋กœ ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์˜์—ญ.
  • CPU๊ฐ€ ์—ฌ๊ธฐ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์‹ ๊ฐ€์ ธ๊ฐ€ ์ฒ˜๋ฆฌ.
  • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘~์ข…๋ฃŒ๊นŒ์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ์กด์žฌ.

์ด ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. CPU๋Š” ์—ฌ๊ธฐ์— ์ €์žฅ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์™€ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜์—ญ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์ข…๋ฃŒ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


data์˜์—ญ:

  • ์ „์—ญ๋ณ€์ˆ˜, static ๋ณ€์ˆ˜๋“ค์ด ์ €์žฅ.
  • ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘๊ณผ ๋™์‹œ์— ํ• ๋‹น, ์ข…๋ฃŒ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ.

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


stack์˜์—ญ:

  • ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ ๋ณ€์ˆ˜๋“ค์ด ์ €์žฅ.
  • ์ปดํŒŒ์ผํƒ€์ž„์— ํฌ๊ธฐ ๊ฒฐ์ •

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


heap์˜์—ญ:

  • mallocํ•จ์ˆ˜๋“ฑ์— ์˜ํ•ด ๋™์ ์œผ๋กœ ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ.
  • ๋Ÿฐํƒ€์ž„์— ํฌ๊ธฐ๊ฒฐ์ • (๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๊ฒ ์ฃ ?)

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


 

 

https://velog.io/@averycode/iOS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B5%AC%EC%A1%B0-Stack-Heap-Data-Code

https://returnclass.tistory.com/213

 

'๊ฐœ๋ฐœ ์‹œ๋‚˜๋ธŒ๋กœ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Flux ๋””์ž์ธ ํŒจํ„ด (1)  (0) 2023.09.17
Lazy Loading  (0) 2023.08.12
github action .env file ์ถ”๊ฐ€  (0) 2023.08.11
์›น ํŽ˜์ด์ง€ ์„ฑ๋Šฅํ–ฅ์ƒ  (0) 2023.08.02
promise  (0) 2023.05.21