์ถœ์ฒ˜ : https://box0830.tistory.com/150

 

๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Code, Data, Heap, Stack)

์ด๊ฒŒ ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ ค์„œ ํ™•์‹คํžˆ ์ •๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๊ฒ ๋„ค์š”. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉดํฌ๊ฒŒ Code, Data, Heap, Stack์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋“ค ๊ฐ๊ฐ์„ segment๋ผ ๋ถˆ๋Ÿฌ์š”. - ๋ฉ”๋ชจ

box0830.tistory.com

์ด๊ฒŒ ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ ค์„œ ํ™•์‹คํžˆ ์ •๋ฆฌ๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๊ฒ ๋„ค์š”. 

 

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด๋ฉด

ํฌ๊ฒŒ Code, Data, Heap, Stack์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋“ค ๊ฐ๊ฐ์„ segment๋ผ ๋ถˆ๋Ÿฌ์š”.

 

 

- ๋ฉ”๋ชจ๋ฆฌ ๋งต

 

โ—‹ ์ •์  ์„ธ๊ทธ๋จผํŠธ

1. Code

: ์ œ์ผ ์•„๋ž˜ text๊ฐ€ ์ฝ”๋“œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.  ๊ธฐ๊ณ„์–ด๋„ ํฌํ•จ๋˜์š”. 

์ด ๋ถ€๋ถ„์€ "read only" ์˜์—ญ์ด๋ผ ์“ฐ๊ธฐ ์ž‘์—…์ด ๋“ค์–ด์˜ค๋ฉด "access violation"์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€, ๊ณ„์† ์œ ์ง€๋˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

 

 

2. Data

์ „์—ญ๋ณ€์ˆ˜(global), ์ •์ ๋ณ€์ˆ˜(static), ๋ฐฐ์—ด(array), ๊ตฌ์กฐ์ฒด(structure) ๋“ฑ์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

1) ์ดˆ๊ธฐํ™” ๋œ ๋ฐ์ดํ„ฐ : data์— ์ €์žฅ

2) ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ : bss(Block Stated Symbol)์— ์ €์žฅ

 

==> ์‚ฌ์‹ค bss๋„ ์ดˆ๊ธฐํ™”๋ฅผ ํ•จ. ๋‹จ, ๊ฐ’์„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๊ณต๊ฐ„์„ ์ดˆ๊ธฐํ™” ์‹œํ‚ค๋Š” ๊ฒƒ.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, bss๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ ์œผ๋กœ ๋ณด๋ฉด ๋” ํšจ์œจ์ ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

==> ์ •๋ฆฌํ•˜์ž๋ฉด, data ์˜์—ญ์ด ๋Ÿฐํƒ€์ž„ ์ด์ „์— ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด, bss๋Š” ๋Ÿฐํƒ€์ž„ ์ดํ›„ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ฒƒ

 

์ด ์˜์—ญ ๋˜ํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

 

* ํ•จ์ˆ˜ ๋‚ด (์‹ฌ์ง€์–ด main ํ•จ์ˆ˜๋„ ํฌํ•จ) ๋ณ€์ˆ˜๋“ค์€ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋˜์ง€ ์•Š์•„์š”!
    --> Stack segment

 

 

 

โ—‹ ๋™์  ์„ธ๊ทธ๋จผํŠธ

3. Heap

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋™์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

malloc, free ๋˜๋Š” new, delete ์— ์˜ํ•˜์—ฌ ํ• ๋‹น, ๋˜๋Š” ๋ฐ˜ํ™˜๋˜๋Š” ์˜์—ญ์ด์ง€์š”.

์ž๋ฐ”๋‚˜ c++๊ณผ ๊ฐ™์ด garbage collector๊ฐ€ ํ™œ๋™ํ•˜๋Š” ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

4. Stack

์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ณต๊ท€ ๋ฒˆ์ง€ ๋“ฑ์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ƒ์„ฑ๋˜๊ณ , ํ•จ์ˆ˜ ์ข…๋ฃŒ์‹œ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  Stack์œผ๋กœ๋ถ€ํ„ฐ ์œ ์ถ” ๊ฐ€๋Šฅํ•˜๋“ฏ์ด Last In First Out ์ •์ฑ…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ์„ธ๊ทธ๋จผํŠธ๋“ค์ด ํ•˜์œ„ ์˜์—ญ์œผ๋กœ๋ถ€ํ„ฐ ํ• ๋‹น๋˜์ง€๋งŒ Stack ์„ธ๊ทธ๋จผํŠธ๋Š” ์ƒ์œ„ ์˜์—ญ๋ถ€ํ„ฐ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

 

* Heap ์˜์—ญ์ด ์ปค์ง€๋ฉด Stack ์˜์—ญ์ด ์ž‘์•„์ง€๊ฒŒ ๋˜๊ณ , ์—ญ๋„ ์„ฑ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

==> heap overflow : heap์ด stack ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒƒ

==> stack overflow : stack์ด heap ์˜์—ญ์„ ์นจ๋ฒ”ํ•˜๋Š” ๊ฒƒ

๋ฐ˜์‘ํ˜•

+ Recent posts