๐ŸŽ„ ์„ฑ์žฅ์ผ์ง€ 3.1

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ (1.0)
์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช…
๐Ÿ‰ ๊ฒฝํ—˜ ์œ„์ฃผ๋กœ (2.0)
๋‹จ์ˆœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋ณด๋‹ค ๋ฌด์—‡์„ ๋ฐฐ์› ๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์งง๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ
โ„๏ธ ์ •ํ•ด์ง„ ํ…œํ”Œ๋ฆฟ์— ๋งž์ถฐ์„œ (3.0)
ํ‚ค์›Œ๋“œ, ๊ฒฝํ—˜ ๋ชจ๋‘ ์ข‹๋‹ค. ๋‹ค๋งŒ ๋งค์ผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์€๋งŒํผ ํ•ต์‹ฌ๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑ (3.1) 230102๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ํ•™์Šต์— ๊ด€ํ•œ ๋‚ด์šฉ ์ถ”๊ฐ€

๐Ÿ”‘ ์˜ค๋Š˜์˜ ํ‚ค์›Œ๋“œ

ํŒจ๋”ฉ(๋ฐ”์ดํŠธ ํŒจ๋”ฉ)

๋ฐ”์ดํŠธ ํŒจ๋”ฉ(Byte Padding)์ด๋ž€ ๊ตฌ์กฐ์ฒด(ํด๋ž˜์Šค)์— ๋ฐ”์ดํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด CPU ์ ‘๊ทผ์— ๋ถ€ํ•˜๋ฅผ ๋œ์–ด์ฃผ๋Š” ๊ธฐ๋ฒ•

ํŒจ๋”ฉ: ์†, ์ถฉ์ „์žฌ / ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋„ฃ์€ ๊ตฐ๋”๋”๊ธฐ

์ข€๋” ์ง๊ด€์ ์ธ ์„ค๋ช…์„ ์œ„ํ•ด ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž(์•„์ฃผ ๊ฐ„๋‹จํ•จ)

class A
{
  char C;
  int I;
}

์œ„ ํด๋ž˜์Šค์˜ ํฌ๊ธฐ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ char(1byte) + int(4byte) => 5byte์ด๋‹ค.
ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” 8byte๊ฐ€ ๋‚˜์˜จ๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ดํŽด๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๋ชจ์Šต

C๋Š” 1byte, I๋Š” 4byte๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.
๋งŒ์•ฝ 32bit CPU๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, 32bit CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•œ ๋ฒˆ์— 32bit(4byte)๋ฅผ ๊ฐ€์ ธ์™€์„œ ์—ฐ์‚ฐํ•œ๋‹ค. ์ฆ‰, 4byte ๋‹จ์œ„๋กœ ์ ‘๊ทผ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด์ œ C์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด 4byte ๋‹จ์œ„๋กœ ์ ‘๊ทผ(๋นจ๊ฐ„์ƒ‰)ํ•˜์—ฌ โ€˜Pโ€™๋ผ๋Š” ๊ฐ’์„ ์“ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ฐ’ ๋Œ€์ž…

๋‹ค์Œ I์— ๊ฐ’์„ ๋Œ€์ž…ํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 2๋ฒˆ์˜ ์ ‘๊ทผ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.(ํ•œ ๋ฒˆ์œผ๋กœ ์•ˆ๋˜๋‹ˆ๊นŒ)

์œ„์™€ ๊ฐ™์ด I์— ๊ฐ’์„ ์“ฐ๊ธฐ ์œ„ํ•ด 2๋ฒˆ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋…€์™€์•ผํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— padding์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ๊ธˆ ๋‚ญ๋น„ํ•˜๋”๋ผ๋„ ์ ‘๊ทผ ํšŸ์ˆ˜๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘๊ฐ„์— 3byte์˜ ํŒจ๋”ฉ์„ ์•Œ์•„์„œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

class A
{
  char a;
  3byte // padding
  int b;
}

์ด์ œ C์™€ I์— ๊ฐ’์„ ๋Œ€์ž…ํ•  ๋•Œ 4byte ๋‹จ์œ„๋กœ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋…€์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํŒจ๋”ฉ1 ํŒจ๋”ฉ2

ํฌ์ธํ„ฐ

๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ฃผ์†Œ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ๊ทธ ๊ฐ’ ์ž์ฒด๋ผ๊ธฐ๋ณด๋‹จ ๊ทธ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์ด๋‹ค.
์ด ๋•Œ, ์ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๊ฐ€ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํฌ์ธํ„ฐ๊ฐ€ ์—†๋‹ค. ๋‹ค๋งŒ, ๋น„์Šทํ•˜๊ฒŒ ํ‘œํ˜„ํ•ด๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const a = 10;
/*
0x10a1(์ž„์˜์˜ ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ)์— 10์ด ํ• ๋‹น๋˜๊ณ 
a์—๋Š” 0x10a1์ด ํ• ๋‹น๋˜๋Š” ๊ฒƒ์ด๋‹ค.
*/
const *b = &a;
/*
b์—๋Š” a์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค.
*/

์ƒ๊ฐํ•ด๋ณด๋ฉด ์–ด์ฐจํ”ผ a๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌด์—‡๋•Œ๋ฌธ์— ๊ตฌ๋”” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์„ ๋ฐ›์•„์˜ค๋Š”๊ฑธ๊นŒ?
๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Ÿ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ํฌ์ธํŠธ ๋ณ€์ˆ˜์˜ ์ด์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. ๊ตฌ์กฐํ™”๋œ ์ž๋ฃŒ๋ฅผ ๋งŒ๋“ค์–ด ํšจ์œจ์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  3. Call by reference ๋ฐฉ์‹์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ์˜ ๋ณต์žกํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ์™€ ํ•จ์ˆ˜์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
  5. ๋ฉ”๋ชจ๋ฆฌ ๋™์  ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์‹ค์งˆ์ ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ํฌ์ธํ„ฐ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฐœ๋…์ด ๊ตฌํ˜„๋˜์–ด์žˆ์ง€๋Š” ์•Š์ง€๋งŒ, ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋„๋ก ํ•˜์ž.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

๋” ์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ’์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์‚ญ์ œ๋˜๋Š” ๊ฒƒ.

let a = { name: 'jayden' };

// a์— ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ• ๋‹น

a = { name: 'hodu' };

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

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

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

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

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

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

ํž™ ์˜์—ญ

  • ๋™์ ํ• ๋‹น๋œ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๋Š” ์˜์—ญ
  • ํ•„์š”ํ•œ ํฌ๊ธฐ๋งŒํผ ๋งŒ๋“ค์–ด ๋†“๋Š” ์Šคํƒ ์˜์—ญ๊ณผ ๋‹ฌ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์˜์—ญ
  • ์ฐธ์กฐํ˜• ํƒ€์ž…(๊ฐ์ฒด)๋“ค์ด ํ• ๋‹น๋˜๋Š” ์˜์—ญ์ด๋‹ค.
  • ์ฝœ ์Šคํƒ(์Šคํƒ ์˜์—ญ)๊ณผ ๋‹ฌ๋ฆฌ LIFO ์ •์ฑ…์„ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  ๋žœ๋คํ•˜๊ฒŒ ๋ฐฐ์น˜๋œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด JS์—”์ง„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์ž(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ)๊ฐ€ ํ•ญ์ƒ ๊ด€๋ฆฌํ•œ๋‹ค.(๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ด ๋ฐœ์ƒํ•˜๋Š” ์˜์—ญ)

    ์ฐธ๊ณ ) ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜: ์ด๋ ‡๊ฒŒ ๋”์ด์ƒ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์‚ญ์ œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.(๊ณ„์† ๋‚จ์•„์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ)

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

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

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

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

malloc(memory allocation; ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)

  • memory allocation(๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น)์˜ ์•ฝ์ž
  • c์–ธ์–ด์—์„œ malloc ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.(๋™์  ํ• ๋‹น)
  • ++) ๋ฐ˜๋Œ€๋กœ malloc์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•ด์ฃผ๊ณ  ๋‹ค์‹œ ์‚ฌ์šฉํ•œ ๋’ค์— ๋‹ค์‹œ ํ• ๋‹น์„ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ๊ณ ์ˆ˜์ค€ ์–ธ์–ด์—์„œ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์•Œ์•„์„œ ์ •๋ฆฌํ•ด์ค€๋‹ค.
    • c์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€ ์–ธ์–ด์—์„œ๋Š” free ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ฐธ๊ณ  ์ž๋ฃŒ

๋ฐ”์ดํŠธ ํŒจ๋”ฉ
ํฌ์ธํ„ฐ ๊ฐœ๋…
ํฌ์ธํŠธ๋ฅผ ์™œ ์“ธ๊นŒ?
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ-๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ(์ปค๋„์˜์—ญ ํฌํ•จ)

๐Ÿ“ ์š”์•ฝ ๋ฐ ํ•˜๋ฃจ ๊ฐ„๋‹จ ํšŒ๊ณ 

์ €๋ฒˆ CPU์— ์ด์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๊ทธ ๋™์•ˆ ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์ฑ…์„ ๋ณด๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•˜๋ฉด์„œ ์ฝœ ์Šคํƒ์ด ๋ญ๊ณ  ํž™์ด ๋ญ”์ง€์— ๋Œ€ํ•ด์„œ ๋ง‰์—ฐํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ์•„์ง๋„ ์•Œ์•„์•ผํ•  ๋‚ด์šฉ๋“ค์ด ๋งŽ์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ ์˜์—ญ์ด ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„๋˜์–ด์žˆ๊ณ  ์šด์˜์ฒด์ œ๋Š” ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฌผ๋ก  ์ƒ๊ฐ๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ด€๋ จํ•œ ์ž๋ฃŒ๋ฅผ ์„œ์น˜ํ•˜๋ฉด c๋‚˜ ์ž๋ฐ”๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…๋œ ๊ฒŒ ๋งŽ์•„์„œ, ์ข€๋” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ๊ด€๋ จ๋œ ๋ฐฉํ–ฅ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ํ•  ์ƒ๊ฐ์ด๋‹ค. CS ํŒŒํŠธ๊ฐ€ ์กฐ๊ธˆ์€ ์ง€๋ฃจํ•  ์ค„ ์•Œ์•˜๋Š”๋ฐ, ๋ฏธ์…˜์ด ์ฃผ์–ด์ง€๊ณ  ๊ตฌํ˜„์„ ์œ„์ฃผ๋กœ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ณต๋ถ€ํ•˜๋Š” ์žฌ๋ฏธ๋„ ์žˆ๊ณ  ๋จธ๋ฆฌ์— ๋” ๋‚จ๋Š” ๊ธฐ๋ถ„์ด๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํ•˜๋“œ์›จ์–ด๋ฅผ ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ๋ผ๋„ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒŒ ์žฌ๋ฏธ์žˆ๋Š” ๊ฑฐ ๊ฐ™๋‹ค!