๐ ์๋ก
Visual Studio Code๋ฅผ ํค๊ณ ์ฝ๋ฉ์ ์์ํ ๋ ค๊ณ ํ๋ค๊ฐ, ๋ฌธ๋ ๊ถ๊ธ์ฆ์ด ์๊ฒผ๋ค. ์ฐ๋ฆฌ ๋์ ๋ณด์ด์ง ์๊ฒ ๋ค์์ ์ด์ฌํ ์ผํด์ฃผ๊ณ ์๋ ์ปดํจํฐ์ ๋ชจ์ต์ด ๋ง์ด๋ค...
์ง๊ธ ์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํ์ํค๊ณ ์ถ์๋๋ ์ผ์ผํ ์ปดํจํฐ์๊ฒ ํ๋ค๊ฒ ์ด์ง๋ฒ์ผ๋ก ๋ฐ๋ก ๋ช ๋ น์ ํ์ง ์์๋ ๋ง์ฐ์ค๋ก ์คํ์ํค๊ณ ์ ํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ธ ํด๋ฆญ ํ๋ฉด ์ปดํจํฐ๋ ์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ถ์ดํ๋ ๊ฒ์ ์์๋ค์ด ์ฆ์ ํ๋ก๊ทธ๋จ์ ๋์ ๋ชจ๋ํฐ์ ๋์์ค๋ค. ๋๋ฌด ์ ๊ธฐํ ๊ฑฐ ๊ฐ๋ค.
์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด ๊ทธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฌ๋ผ๊ฐ๊ฒ ๋๊ณ , ํ๋ก๊ทธ๋จ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค. ๊ทธ๋์ ์ค๋์ ์ด ๋ฉ๋ชจ๋ฆฌ ๋ผ๋๋ถ์ ๋ํด์ ์ข ๊ณต๋ถํด๋ณผ๋ ค๊ณ ํ๋ค.
โณ๋ฉ๋ชจ๋ฆฌ ์์ญ
๋ค์ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ 4๊ฐ์ง๋ก ๋๋๋ค.
๐ ํ ์คํธ(Text) ์์ญ ๐ ๋ฐ์ดํฐ(Data) ์์ญ ๐ ์คํ(Stack) ์์ญ ๐ ํ(Heap) ์์ญ
โณFrist, ์ฝ๋(Code) ์์ญ or ํ ์คํธ(Text) ์์ญ
์ฐ๋ฆฌ๊ฐ ์คํํ๊ฒ ๋ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋ ์์ญ์ด๋ค. CPU๋ ์ฝ๋ ์์ญ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด์ ํ๋์ฉ ์ฒ๋ฆฌ๋ฅผ ์์ผ์ค๋ค.
โณSecond, ๋ฐ์ดํฐ(Data) ์์ญ
์ ์ญ ๋ณ์, ์ ์ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก, ํ๋ก๊ทธ๋จ์ ์์๊ณผ ํจ๊ป ํ ๋น๋๊ณ , ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ ํจ๊ป ์๋ฉธ๋๋ค. ๋ฐ์ดํฐ ์์ญ์ 2๊ฐ์ง๋ก ๋๋ ์ง ์ ์๋ค.
(1) Initialized Data Segment(์ด๊ธฐํ๋ ๋ฐ์ดํฐ์์ญ) : ๋ฐ์ดํฐ๊ฐ ํ ๋น์ด ๋ ๋ณ์
(2) Uninitialized Data Segment(์ด๊ธฐํ๋ ๋ฐ์ดํฐ์์ญ) : ์ ์ธ๋ง ๋ ๋ณ์
์ฌ๊ธฐ์ (2)๋ฒ์ BBS(Block started By Symbol)๋ก ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
โณThird, ์คํ(Stack) ์์ญ
ํจ์๊ฐ ์คํ๋ ๋ ๋งค๊ฐ ๋ณ์, ์ง์ญ ๋ณ์๋ฅผ ์ ์ฅํ๋ ์์ญ์ด๊ณ , ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๊ณ , ํจ์์ ์ข ๋ฃ์ ํจ๊ป ์๋ฉธ๋๋ค. ๋ํ ์ด๋ ๊ฒ ํจ์๋ฅผ ์ฐจ๊ณก์ฐจ๊ณก ์์๋๊ณ ์คํ๋๋ ๊ณต๊ฐ์ ์คํ ํ๋ ์(Stack Frame)์ด๋ผ๊ณ ํ๋ค.
์คํ์ LIFO(Last-Input First-Out) ๋ฐฉ์์ ์ฌ์ฉํ๋๋ฐ, ์ด๋ ๊ฐ์ฅ ๋์ค์ ์ ๋ ฅ๋ ๊ฐ์ด ๊ฐ์ฅ ๋จผ์ ์ถ๋ ฅ๋๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ๋์ ๊ณณ์์ ๋ฎ์ ๊ณณ์ ๋ฐฉํฅ์ผ๋ก ํ ๋น์ด ๋๋ค.
์ฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฎ๋ค, ๋๋ค๊ฐ ๋ํ๋ด๋ ๋ป์ ๋ง ๊ทธ๋๋ก ์ฃผ์๊ฐ์ด ๋ฎ๋ค ๋๋ค๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด๋ค. ์ฌ์ค ์ด์ชฝ ๋ถ๋ถ์ ๋๋ฌด ๋ณต์กํ๊ธฐ ๋๋ฌธ์...๊ทธ๋ฅ ๋์ด๊ฐ๊ฒ ๋ค..
โณFourth, ํ(Heap) ์์ญ
์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก, ์ฌ์ฉ์๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ ํด์ ํ๋ค. ์๋ฅผ ๋ค์ด C์ธ์ด์์ ๋ฐฐ์ด์ ํ๋ ๋ง๋ค์ด ์ถ๋ ฅํ๊ณ ์ ํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ทธ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ฌ์ ์ ๋ฏธ๋ฆฌ ์ ์ ํด์ค์ผ ํ๋ค. ์ด์ ๊ฐ์ ๊ฐ๋ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ ๊ฒ์ด๋ค.
ํ ์์ญ์ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์๋ก ํ ๋น์ด ๋๊ณ , ๋ฐ์ดํฐ ์์ญ๊ณผ ์คํ ์์ญ์ ์ปดํ์ผ ํ์์ ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋์ง๋ง ํ ์์ญ์ ๋ฐํ์์ ์ฌ์ฉ์๊ฐ ์ง์ ๊ฒฐ์ ํ๊ฒ ๋๋ค. ์ด๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋์ ํ ๋น์ด๋ผ๊ณ ํ๋ค.
๋ฐํ์์ ์ปดํ์ผ์ด ๋๋๊ณ ์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ์ ์์ํ๋ ์์ ์ ์๋ฏธํ๋ค.
๐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์
์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ด์์ฒด์ ๋ 32๋นํธ์ 64๋นํธ๋ก ๋๋ ์ ธ ์๋ค. ์ด๊ฒ๋ค์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋จ์๋ฅผ ๋ํ๋ธ๋ค.
32๋นํธ๋ 0000 0000 0000 0000 0000 0000 0000 0000 ๊ณผ ๊ฐ์ด ๋ํ๋ผ ์ ์๋ค. ์ด 32๋นํธ์์ ๋ํ๋ผ ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋จ์์ ๊ฒฝ์ฐ์ ์๋ 2³² ์ด๋ค. ๋ํ ํ๋์ ์ฃผ์๊ฐ 32๋นํธ ์ด๋ฏ๋ก 4byte์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๊ฒ ๋๊ณ , 1byte์ ํฌ๊ธฐ๋ฅผ 4,294,967,296 ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๊ฒ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ 4GB๋ฅผ ๋ํ๋ด๊ฒ ๋๋ค.
64๋นํธ์์ ๋ํ๋ผ ์ ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋จ์์ ๊ฒฝ์ฐ์ ์๋ ๋ฌด๋ ค 2โถโด ์ด ๋๋ค. ์ด๋ 8byte์ ๊ธธ์ด๋ฅผ ๊ฐ์ง ์ ์๊ฒ ๋๋ค. ๋ํ 18,446,744,073,709,551,616 ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌ ํฌ ์ ์๊ณ , ์ด๋ 16EB์ด๋ค. ๋น์ฅ ๋จ์๋ง ๋ด๋ ์์ฒญ๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค...
๋ณดํต์ 2์ง์๋ก ํํํ๊ธฐ ๊ท์ฐฎ๊ณ ์ด๋ ต๊ธฐ ๋๋ฌธ์ 16์ง์๋ก ์นํ์ํจ๋ค.
๊ฐ์ฅ ์ฒซ๋ฒ์งธ์ ์ฌ๋ ค๋จ๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ฝ๋ ์์ญ์ด ๊ฐ์ฅ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฎ๊ณ , ๋ฐ์ดํฐ ์์ญ (์ด๊ธฐํ๊ฐ ๋ ๋ณ์๋ค์ด ๊ฐ์ฅ ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ , ๊ทธ ๋ค์์ผ๋ก ์ด๊ธฐํ๊ฐ ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ๋ ค์ง๋ค.) , ํ ์์ญ, ์คํ ์์ญ ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ง์ ์ด ๋๋ค.
ํ๋ฒ ์ค์ ์ผ๋ก ๊ฐ๋ณด์.
#include <stdio.h>
int main() {
int a = 25;
printf("%p", &a);
return 0;
}
๋ค์๊ณผ ๊ฐ์ด ๋ณ์ a์ ์ฃผ์๋ฅผ ๊ฐ๋ฅดํค๋ ํ๋ก๊ทธ๋จ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ a์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ถ๋ ฅํ๋ค๋ฉด
๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ํด๋น a๋ฅผ 2์ง๋ฒ์ผ๋ก ํ๋ฉด 0001 1001๋ก ํํ์ด ๊ฐ๋ฅํ๋ค. ์ด๋ฌํ 2์ง๋ฒ์ด ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ ์ฅ์ด ๋์๋ ๊ฒ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ํ์นธ์ ํฌ๊ธฐ๋ 1byte์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ถ๋ ฅํ๋ a๋ int ๋ผ๋ ์๋ฃํ์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก 4byte๋ฅผ ๊ฐ์ง๊ณ , ๊ทธ๋์ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์์ ์ด 4์นธ์ ํฌ๊ธฐ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ค.
0x7ffe4522f378 - 0001 1001
0x7ffe4522f379 - 0000 0000
0x7ffe4522f380 - 0000 0000
0x7ffe4522f381 - 0000 0000
์ค์ง์ ์ผ๋ก a๋ ์ด๋ฐ ์์ผ๋ก ์ ์ฅ์ด ๋์๋ ๊ฒ์ด๋ค. (์คํ ํ๊ฒฝ์ด 64๋นํธ๋ก ๊ณผ์ ํ์ ๋, 7 ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ 0๋ค์ ๋ชจ๋ ์๋ต์ด ๊ฐ๋ฅํ๋ค.)
'IT Dictionary > Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋ ๋๋ฒ๊น (Vscode Debugging) (13) | 2023.04.29 |
---|---|
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ (Sorting Algoritm) ๊ฐ๋ ์ ๋ฆฌ (0) | 2023.04.29 |
๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ , ์๋ฐ์คํฌ๋ฆฝํธ(JS) ์๋ ์๋ฆฌ (0) | 2023.04.29 |
์๋ฐ ์ปดํ์ผ ๊ณผ์ (Java Compile Process) (0) | 2023.04.28 |
C์ธ์ด ์ปดํ์ผ ๊ณผ์ (C Compile Process) (0) | 2023.04.28 |