๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ ์ดํ•ดํ•˜๊ธฐ: C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ˆจ์€ ๋น„๋ฐ€ ๐Ÿ•ต๏ธโ€โ™‚๏ธ

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ ์ดํ•ดํ•˜๊ธฐ: C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ˆจ์€ ๋น„๋ฐ€ ๐Ÿ•ต๏ธโ€โ™‚๏ธ

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„! ์˜ค๋Š˜์€ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ˆจ์€ ๋น„๋ฐ€, ๋ฐ”๋กœ "๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ"์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ์ด๊ฑฐ ์ง„์งœ ์ค‘์š”ํ•œ ์ฃผ์ œ๋ผ ์žฌ๋Šฅ๋„ท์—์„œ๋„ ์ž์ฃผ ๋‹ค๋ค„์ง€๋Š” ๋‚ด์šฉ์ด์ฃ . ๊ทผ๋ฐ ๊ฑฑ์ • ๋งˆ์„ธ์š”! ์–ด๋ ค์šด ๋‚ด์šฉ๋„ ์ œ๊ฐ€ ์‰ฝ๊ณ  ์žฌ๋ฐŒ๊ฒŒ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”. ๋งˆ์น˜ ์นดํ†ก์œผ๋กœ ์ˆ˜๋‹ค ๋– ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”! ใ…‹ใ…‹ใ…‹

์ž, ์ด์ œ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ, ๋ญ”๊ฐ€ ์–ด๋ ค์›Œ ๋ณด์ด์ฃ ? ๊ทผ๋ฐ ์‹ค์€ ์šฐ๋ฆฌ ์ผ์ƒ์ƒํ™œ์—์„œ๋„ ๋น„์Šทํ•œ ๊ฐœ๋…์„ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๋Ÿฌ๋ถ„ ์˜ท์žฅ ์ •๋ฆฌํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”? ๊ทธ๋ƒฅ ๋ง‰ ๋˜์ ธ ๋„ฃ๋‚˜์š”, ์•„๋‹ˆ๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์‹œ๋‚˜์š”? ๐Ÿงฆ๐Ÿ‘•๐Ÿ‘–

๐Ÿ’ก Tip: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์€ ๋งˆ์น˜ ์˜ท์žฅ ์ •๋ฆฌ์™€ ๊ฐ™์•„์š”. ํšจ์œจ์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ๊ณต๊ฐ„๋„ ์ ˆ์•ฝ๋˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ์ฃ !

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ณผ๊นŒ์š”? ์ค€๋น„๋˜์…จ๋‚˜์š”? ์ž, ์ถœ๋ฐœ~! ๐Ÿš€

1. ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์ด ๋ญ์˜ˆ์š”? ๐Ÿค”

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

๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ฒฝ๊ณ„์— ๋งž์ถฐ ์ €์žฅํ•˜๋Š” ๊ฑธ ๋งํ•ด์š”.

์ด๊ฒŒ ์™œ ์ค‘์š”ํ•˜๋ƒ๊ณ ์š”? ์Œ... ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์ฑ…์„ ์ฐพ์„ ๋•Œ, ํฌ๊ธฐ๋ณ„๋กœ ์ •๋ฆฌ๋œ ์ฑ…์žฅ์—์„œ ์ฐพ๋Š” ๊ฒŒ ๋” ์‰ฝ์ง€ ์•Š๋‚˜์š”? ์ปดํ“จํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ˆ์š”!

๐ŸŠ ์˜ˆ์‹œ: 32๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ณดํ†ต 4๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ •๋ ฌํ•ด์š”. 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” 8๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ •๋ ฌํ•˜๊ณ ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋นจ๋ฆฌ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์š”!

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ๊ถ๊ธˆํ•œ ์ ! ์™œ ์ด๋ ‡๊ฒŒ ์ •๋ ฌ์„ ํ•ด์•ผ ํ• ๊นŒ์š”? ๊ทธ๋ƒฅ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์ €์žฅํ•˜๋ฉด ์•ˆ ๋˜๋‚˜์š”? ๐Ÿคทโ€โ™‚๏ธ

์Œ... ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์—„์ฒญ ๋ฐ”์œ ๋„์„œ๊ด€ ์‚ฌ์„œ์˜ˆ์š”. ์ฑ…์„ ์ฐพ์œผ๋Ÿฌ ์˜จ ์‚ฌ๋žŒ๋“ค์ด ์ค„์„ ์„œ ์žˆ๊ณ , ์—ฌ๋Ÿฌ๋ถ„์€ ๋นจ๋ฆฌ๋นจ๋ฆฌ ์ฑ…์„ ์ฐพ์•„์ค˜์•ผ ํ•ด์š”. ๊ทผ๋ฐ ์ฑ…์žฅ์ด ์—‰๋ง์ง„์ฐฝ์ด์—์š”. ํฐ ์ฑ…, ์ž‘์€ ์ฑ…์ด ๋’ค์„ž์—ฌ ์žˆ๊ณ , ์‹ฌ์ง€์–ด ์–ด๋–ค ์ฑ…์€ ๋น„์Šค๋“ฌํžˆ ๊ฝ‚ํ˜€์žˆ์–ด์š”. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์ฑ…์„ ๋นจ๋ฆฌ ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ปดํ“จํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ˆ์š”. CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ, ์ •๋ ฌ์ด ์ž˜ ๋˜์–ด ์žˆ์œผ๋ฉด ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์š”. ํŠนํžˆ ํ˜„๋Œ€์˜ CPU๋“ค์€ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ์„ค๊ณ„๋˜์–ด ์žˆ์–ด์„œ, ์ •๋ ฌ์ด ์ž˜ ๋˜์–ด ์žˆ์œผ๋ฉด ๋”์šฑ ํšจ์œจ์ ์ด์ฃ .

๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ ๋น„๊ต ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ ๋น„๊ต ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๋œ ๋ฉ”๋ชจ๋ฆฌ

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

๊ทธ๋Ÿผ ์ด์ œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”? ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด ์žˆ์–ด์š”.

  • ์ž์—ฐ ์ •๋ ฌ(Natural Alignment): ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ํฌ๊ธฐ์— ๋งž์ถฐ ์ •๋ ฌํ•˜๋Š” ๊ฑฐ์˜ˆ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, 4๋ฐ”์ดํŠธ int๋Š” 4์˜ ๋ฐฐ์ˆ˜ ์ฃผ์†Œ์— ์ €์žฅํ•ด์š”.
  • ๊ตฌ์กฐ์ฒด ์ •๋ ฌ(Structure Alignment): ๊ตฌ์กฐ์ฒด ์ „์ฒด๋ฅผ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„์˜ ํฌ๊ธฐ์— ๋งž์ถฐ ์ •๋ ฌํ•ด์š”.
  • ํŒจ๋”ฉ(Padding): ์ •๋ ฌ์„ ์œ„ํ•ด ๋นˆ ๊ณต๊ฐ„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”. ์ด๊ฑด ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ• ๊ฒŒ์š”!

์™€, ๋ฒŒ์จ ์ด๋ ‡๊ฒŒ๋‚˜ ๋ฐฐ์› ์–ด์š”! ์—ฌ๋Ÿฌ๋ถ„ ์ •๋ง ๋Œ€๋‹จํ•ด์š”. ๐Ÿ‘๐Ÿ‘๐Ÿ‘ ์ด์ œ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์ด ๋ญ”์ง€ ์ข€ ๊ฐ์ด ์˜ค์‹œ๋‚˜์š”? ์•„์ง ์™„์ „ํžˆ ์ดํ•ด ์•ˆ ๋˜์…จ๋‹ค๊ณ ์š”? ๊ดœ์ฐฎ์•„์š”. ์šฐ๋ฆฌ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ๊ฑฐ๋‹ˆ๊นŒ์š”!

๐Ÿ’ก Tip: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์ด๋‚˜ ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ…์—์„œ๋Š” ์ •๋ง ์ค‘์š”ํ•ด์š”!

์ž, ์ด์ œ ๋‹ค์Œ ์„น์…˜์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ค€๋น„ ๋˜์…จ๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ์ด์ œ ํŒจ๋”ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ํŒจ๋”ฉ์ด ๋ญ”์ง€ ๊ถ๊ธˆํ•˜์‹œ์ฃ ? ๊ทธ๋Ÿผ ๋”ฐ๋ผ์˜ค์„ธ์š”! ๐Ÿšถโ€โ™‚๏ธ๐Ÿšถโ€โ™€๏ธ

2. ํŒจ๋”ฉ: ๋ฉ”๋ชจ๋ฆฌ์˜ ์ˆจ์€ ๊ณต๊ฐ„ ๐Ÿ•ต๏ธโ€โ™€๏ธ

์ž, ์ด์ œ ํŒจ๋”ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์ฐจ๋ก€์˜ˆ์š”. ํŒจ๋”ฉ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋ญ๊ฐ€ ๋– ์˜ค๋ฅด์‹œ๋‚˜์š”? ํ˜น์‹œ ์ฟ ์…˜? ์•„๋‹ˆ๋ฉด ๋…ธํŠธ๋ถ ํŒŒ์šฐ์น˜? ใ…‹ใ…‹ใ…‹ ์ปดํ“จํ„ฐ ์„ธ๊ณ„์˜ ํŒจ๋”ฉ์€ ์กฐ๊ธˆ ๋‹ฌ๋ผ์š”. ํ•˜์ง€๋งŒ ๋น„์Šทํ•œ ์ ๋„ ์žˆ์–ด์š”!

ํŒจ๋”ฉ์€ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์„ ์œ„ํ•ด ์ถ”๊ฐ€๋˜๋Š” ๋นˆ ๊ณต๊ฐ„์ด์—์š”.

์™œ ์ด๋Ÿฐ ๋นˆ ๊ณต๊ฐ„์ด ํ•„์š”ํ• ๊นŒ์š”? ์Œ... ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์ฑ…์žฅ์— ์ฑ…์„ ๊ฝ‚์„ ๋•Œ, ๊ฐ€๋” ์ฑ… ์‚ฌ์ด์— ๊ณต๊ฐ„์„ ๋‘์ง€ ์•Š๋‚˜์š”? ์ƒˆ ์ฑ…์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ, ๋˜๋Š” ์ฑ…์„ ์‰ฝ๊ฒŒ ๋บ„ ์ˆ˜ ์žˆ๊ฒŒ์š”. ํŒจ๋”ฉ๋„ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•ด์š”!

๐ŸŠ ์˜ˆ์‹œ: char(1๋ฐ”์ดํŠธ)์™€ int(4๋ฐ”์ดํŠธ)๋ฅผ ์—ฐ์†ํ•ด์„œ ์ €์žฅํ•œ๋‹ค๊ณ  ํ•ด๋ด์š”. char ๋‹ค์Œ์— 3๋ฐ”์ดํŠธ์˜ ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋˜์–ด int๊ฐ€ 4์˜ ๋ฐฐ์ˆ˜ ์ฃผ์†Œ์— ์ €์žฅ๋ผ์š”.

์ด๊ฒŒ ์™œ ์ค‘์š”ํ• ๊นŒ์š”? ์Œ... ์ƒ์ƒํ•ด๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์—„์ฒญ ๋ฐ”์œ ํƒ๋ฐฐ ๊ธฐ์‚ฌ์˜ˆ์š”. ํฐ ๋ฐ•์Šค์™€ ์ž‘์€ ๋ฐ•์Šค๋ฅผ ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํŠธ๋Ÿญ์— ๊ทธ๋ƒฅ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๋˜์ ธ ๋„ฃ์—ˆ์–ด์š”. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํฐ ๋ฐ•์Šค๋ฅผ ๊บผ๋‚ด๋ ค๋ฉด ์ž‘์€ ๋ฐ•์Šค๋“ค์„ ๋‹ค ์น˜์›Œ์•ผ ํ•ด์š”. ์—„์ฒญ ๋น„ํšจ์œจ์ ์ด์ฃ ?

์ปดํ“จํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ˆ์š”. CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ, ํŒจ๋”ฉ์ด ์—†์œผ๋ฉด ์—ฌ๋Ÿฌ ๋ฒˆ ์ฝ์–ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ํŒจ๋”ฉ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ž˜ ์ •๋ ฌํ•ด๋‘๋ฉด, CPU๋Š” ํ•œ ๋ฒˆ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์š”. ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ด์ฃ !

ํŒจ๋”ฉ ์„ค๋ช… ํŒจ๋”ฉ ์„ค๋ช… ํŒจ๋”ฉ ์—†์Œ C int C ํŒจ๋”ฉ ์žˆ์Œ C ํŒจ๋”ฉ int C ํŒจ๋”ฉ

์œ„ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. ์œ„์ชฝ์€ ํŒจ๋”ฉ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ๊ฒฝ์šฐ, ์•„๋ž˜์ชฝ์€ ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์˜ˆ์š”. ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ ฌ๋˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์ฃ ?

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ์˜๋ฌธ! ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”? ๋„ค, ๋งž์•„์š”. ํ•˜์ง€๋งŒ ์ด๊ฑด trade-off์˜ˆ์š”. ์กฐ๊ธˆ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ , ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์ฃ .

์ž, ์ด์ œ ํŒจ๋”ฉ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ๊นŒ์š”? ํŒจ๋”ฉ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ํŠน์ง•์ด ์žˆ์–ด์š”.

  • ์ž๋™ ํŒจ๋”ฉ: ๋Œ€๋ถ€๋ถ„์˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ž๋™์œผ๋กœ ํŒจ๋”ฉ์„ ์ถ”๊ฐ€ํ•ด์š”. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์ฃ .
  • ๊ตฌ์กฐ์ฒด ํŒจ๋”ฉ: ๊ตฌ์กฐ์ฒด ๋‚ด๋ถ€์˜ ๋ฉค๋ฒ„๋“ค ์‚ฌ์ด์—๋„ ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋ผ์š”. ์ด๊ฑด ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ• ๊ฒŒ์š”!
  • ํŒจ๋”ฉ ์ œ์–ด: ๋•Œ๋กœ๋Š” ํŒจ๋”ฉ์„ ์ œ์–ดํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ์–ด์š”. ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ต๋‹ˆ๋‹ค.

์™€, ๋ฒŒ์จ ์ด๋ ‡๊ฒŒ๋‚˜ ๋ฐฐ์› ์–ด์š”! ์—ฌ๋Ÿฌ๋ถ„ ์ •๋ง ๋Œ€๋‹จํ•ด์š”. ๐Ÿ‘๐Ÿ‘๐Ÿ‘ ์ด์ œ ํŒจ๋”ฉ์ด ๋ญ”์ง€ ์ข€ ๊ฐ์ด ์˜ค์‹œ๋‚˜์š”? ์•„์ง ์™„์ „ํžˆ ์ดํ•ด ์•ˆ ๋˜์…จ๋‹ค๊ณ ์š”? ๊ดœ์ฐฎ์•„์š”. ์šฐ๋ฆฌ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ๊ฑฐ๋‹ˆ๊นŒ์š”!

๐Ÿ’ก Tip: ํŒจ๋”ฉ์„ ์ดํ•ดํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ํ”„๋กœ๊ทธ๋žจ ์„ฑ๋Šฅ ์‚ฌ์ด์˜ ๊ท ํ˜•์„ ์žก๋Š” ๋ฐ ๋„์›€์ด ๋ผ์š”. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์—์„œ๋Š” ์ด ๊ท ํ˜•์ด ์ •๋ง ์ค‘์š”ํ•˜๋‹ต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ๋‹ค์Œ ์„น์…˜์œผ๋กœ ๋„˜์–ด๊ฐˆ ์ค€๋น„ ๋˜์…จ๋‚˜์š”? ์šฐ๋ฆฌ๋Š” ์ด์ œ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ๊ฑฐ์˜ˆ์š”. ๊ตฌ์กฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹œ์ฃ ? ๊ทธ๋Ÿผ ๋”ฐ๋ผ์˜ค์„ธ์š”! ๐Ÿƒโ€โ™‚๏ธ๐Ÿƒโ€โ™€๏ธ

3. ๊ตฌ์กฐ์ฒด ์ •๋ ฌ: ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ์˜ ์ •๋ฆฌ ๋ฐฉ๋ฒ• ๐Ÿงฑ

์ž, ์ด์ œ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์ฐจ๋ก€์˜ˆ์š”. ๊ตฌ์กฐ์ฒด, ๋“ค์–ด๋ณด์…จ์ฃ ? C ์–ธ์–ด์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋…์ด์—์š”. ๊ทผ๋ฐ ์ด ๊ตฌ์กฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๋Š”์ง€ ์•„์‹œ๋‚˜์š”? ์ด๊ฒŒ ๋ฐ”๋กœ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์ด์—์š”!

๊ตฌ์กฐ์ฒด ์ •๋ ฌ์€ ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ํšจ์œจ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”.

์™œ ์ด๊ฒŒ ์ค‘์š”ํ• ๊นŒ์š”? ์Œ... ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์ด ์˜ท์žฅ์„ ์ •๋ฆฌํ•œ๋‹ค๊ณ  ํ•ด๋ด์š”. ํ‹ฐ์…”์ธ , ๋ฐ”์ง€, ์–‘๋ง, ๋ชจ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ์ •๋ฆฌํ•˜์‹ค ๊ฑด๊ฐ€์š”? ๊ทธ๋ƒฅ ๋ง‰ ๋˜์ ธ ๋„ฃ์„ ๊ฑด๊ฐ€์š”, ์•„๋‹ˆ๋ฉด ์ข…๋ฅ˜๋ณ„๋กœ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ๊ฑด๊ฐ€์š”?

๐ŸŠ ์˜ˆ์‹œ:


struct Person {
    char name[20];  // 20๋ฐ”์ดํŠธ
    int age;        // 4๋ฐ”์ดํŠธ
    double height;  // 8๋ฐ”์ดํŠธ
};
์ด ๊ตฌ์กฐ์ฒด๋Š” ์‹ค์ œ๋กœ 32๋ฐ”์ดํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ 40๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์™œ ๊ทธ๋Ÿด๊นŒ์š”?

์ปดํ“จํ„ฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์˜ˆ์š”. ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋“ค์„ ์ž˜ ์ •๋ฆฌํ•ด๋‘๋ฉด, CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ๋นจ๋ฆฌ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์š”. ๊ทธ๋ž˜์„œ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์ด ์ค‘์š”ํ•œ ๊ฑฐ์ฃ !

์ž, ์ด์ œ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์˜ ๊ทœ์น™์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊นŒ์š”? ์ฃผ์š” ๊ทœ์น™์€ ์ด๋ž˜์š”:

  • ์ฒซ ๋ฒˆ์งธ ๋ฉค๋ฒ„: ๊ตฌ์กฐ์ฒด์˜ ์‹œ์ž‘ ์ฃผ์†Œ์— ์œ„์น˜ํ•ด์š”.
  • ๋‹ค์Œ ๋ฉค๋ฒ„๋“ค: ์ž์‹ ์˜ ํฌ๊ธฐ๋‚˜ ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„์˜ ํฌ๊ธฐ ์ค‘ ์ž‘์€ ๊ฐ’์˜ ๋ฐฐ์ˆ˜ ์ฃผ์†Œ์— ์œ„์น˜ํ•ด์š”.
  • ์ „์ฒด ๊ตฌ์กฐ์ฒด: ๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„์˜ ํฌ๊ธฐ์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋„๋ก ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋ผ์š”.

์Œ... ์ข€ ๋ณต์žกํ•ด ๋ณด์ด์ฃ ? ๊ฑฑ์ • ๋งˆ์„ธ์š”. ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณผ๊ฒŒ์š”!

๊ตฌ์กฐ์ฒด ์ •๋ ฌ ์„ค๋ช… ๊ตฌ์กฐ์ฒด ์ •๋ ฌ ์„ค๋ช… name[20] age height ์ •๋ ฌ ์ „ (32๋ฐ”์ดํŠธ) name[20] ํŒจ๋”ฉ age ํŒจ๋”ฉ height ํŒจ๋”ฉ ์ •๋ ฌ ํ›„ (40๋ฐ”์ดํŠธ)

์œ„ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. ์œ„์ชฝ์€ ์ •๋ ฌ ์ „์˜ ๊ตฌ์กฐ์ฒด, ์•„๋ž˜์ชฝ์€ ์ •๋ ฌ ํ›„์˜ ๊ตฌ์กฐ์ฒด์˜ˆ์š”. ์ •๋ ฌ ํ›„์—๋Š” ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋˜์–ด ์ „์ฒด ํฌ๊ธฐ๊ฐ€ 40๋ฐ”์ดํŠธ๊ฐ€ ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์ฃ ?

์ž, ์ด์ œ ๊ฐ ๋ฉค๋ฒ„๋ณ„๋กœ ์‚ดํŽด๋ณผ๊นŒ์š”?

  1. name[20]: 20๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์ด์—์š”. ์ด๊ฑด ๊ทธ๋Œ€๋กœ ์‹œ์ž‘ ์ฃผ์†Œ์— ์œ„์น˜ํ•ด์š”.
  2. age: 4๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ int์˜ˆ์š”. ํ•˜์ง€๋งŒ ๋ฐ”๋กœ ๋’ค์— ์˜ค์ง€ ์•Š๊ณ , 4๋ฐ”์ดํŠธ ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋ผ์š”. ์™œ๋ƒ๊ณ ์š”? 8์˜ ๋ฐฐ์ˆ˜ ์ฃผ์†Œ์— ์œ„์น˜ํ•ด์•ผ ํ•˜๊ฑฐ๋“ ์š” (๊ฐ€์žฅ ํฐ ๋ฉค๋ฒ„์ธ double์˜ ํฌ๊ธฐ๊ฐ€ 8๋ฐ”์ดํŠธ๋‹ˆ๊นŒ์š”).
  3. height: 8๋ฐ”์ดํŠธ ํฌ๊ธฐ์˜ double์ด์—์š”. ์ด๊ฒƒ๋„ 8์˜ ๋ฐฐ์ˆ˜ ์ฃผ์†Œ์— ์œ„์น˜ํ•ด์š”.
  4. ์ „์ฒด ๊ตฌ์กฐ์ฒด: ๋งˆ์ง€๋ง‰์— 4๋ฐ”์ดํŠธ์˜ ํŒจ๋”ฉ์ด ์ถ”๊ฐ€๋ผ์š”. ์™œ๋ƒ๊ณ ์š”? ์ „์ฒด ํฌ๊ธฐ๋ฅผ 8์˜ ๋ฐฐ์ˆ˜๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ์˜ˆ์š”.

์™€, ์ •๋ง ๋ณต์žกํ•˜์ฃ ? ๊ทผ๋ฐ ์ด๋ ‡๊ฒŒ ์ •๋ ฌ์„ ํ•˜๋ฉด CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ํ›จ์”ฌ ํšจ์œจ์ ์ด์—์š”. ํŠนํžˆ 64๋น„ํŠธ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋”์šฑ ๊ทธ๋ž˜์š”!

๐Ÿ’ก Tip: ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„์˜ ์ˆœ ์„œ๋ฅผ ๋ฐ”๊พธ๋ฉด ์ „์ฒด ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์–ด์š”. ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ๋ฉค๋ฒ„๋ถ€ํ„ฐ ํฐ ๋ฉค๋ฒ„ ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด ๋Œ€์ฒด๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์— ๋Œ€ํ•ด ์ข€ ๋” ์ดํ•ด๊ฐ€ ๋˜์…จ๋‚˜์š”? ์•„์ง๋„ ์–ด๋ ต๋‹ค๊ตฌ์š”? ๊ดœ์ฐฎ์•„์š”. ์ด๊ฑด ์ •๋ง ๋ณต์žกํ•œ ์ฃผ์ œ๋‹ˆ๊นŒ์š”. ์—ฐ์Šต์ด ํ•„์š”ํ•ด์š”!

๊ทธ๋Ÿผ ์ด์ œ ์‹ค์ œ ์ฝ”๋“œ๋กœ ํ•œ๋ฒˆ ์‚ดํŽด๋ณผ๊นŒ์š”? C ์–ธ์–ด์—์„œ ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์š”. ๋ฐ”๋กœ sizeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ์˜ˆ์š”!


#include <stdio.h>

struct Person {
    char name[20];
    int age;
    double height;
};

int main() {
    printf("๊ตฌ์กฐ์ฒด Person์˜ ํฌ๊ธฐ: %zu ๋ฐ”์ดํŠธ\n", sizeof(struct Person));
    return 0;
}

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ตฌ์กฐ์ฒด Person์˜ ์‹ค์ œ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์–ด์š”. 40๋ฐ”์ดํŠธ๊ฐ€ ๋‚˜์˜ฌ ๊ฑฐ์˜ˆ์š”!

์™€, ์ •๋ง ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฐฐ์› ์ฃ ? ์—ฌ๋Ÿฌ๋ถ„ ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ๐Ÿ‘๐Ÿ‘๐Ÿ‘ ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์€ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋…์ด์—์š”. ํŠนํžˆ ๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‚˜ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์„ ํ•  ๋•Œ ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด์ฃ .

๐Ÿ’ก Tip: ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์„ ์ž˜ ์ดํ•ดํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์ด๋‚˜ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค!

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ์—ฌ์ •์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด ๋ชจ๋“  ๋‚ด์šฉ์„ ์–ด๋–ป๊ฒŒ ์‹ค์ œ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ๊นŒ์š”? ๊ทธ๋Ÿผ ๋”ฐ๋ผ์˜ค์„ธ์š”! ๐Ÿƒโ€โ™‚๏ธ๐Ÿƒโ€โ™€๏ธ

4. ์‹ค์ „ ์‘์šฉ: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ์˜ ํ™œ์šฉ ๐Ÿ› ๏ธ

์ž, ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณผ ์ฐจ๋ก€์˜ˆ์š”. ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ, ๊ตฌ์กฐ์ฒด ์ •๋ ฌ... ์ด ๋ชจ๋“  ๊ฒŒ ์–ด๋””์— ์“ฐ์ผ๊นŒ์š”? ๊ฑฑ์ • ๋งˆ์„ธ์š”, ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋œ๋‹ต๋‹ˆ๋‹ค!

๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ด์š”.

์–ด๋–ป๊ฒŒ ํ™œ์šฉ๋˜๋Š”์ง€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณผ๊นŒ์š”?

๐ŸŠ ์˜ˆ์‹œ:


// ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•œ ํŒจํ‚ท ๊ตฌ์กฐ์ฒด
struct NetworkPacket {
    uint32_t header;
    uint8_t  type;
    char     data[15];
};
์ด ๊ตฌ์กฐ์ฒด๋Š” ํŒจ๋”ฉ ์—†์ด ์ •ํ™•ํžˆ 20๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ด์š”. ์™œ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„ํ–ˆ์„๊นŒ์š”?

๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ์ •ํ™•ํ•ด์•ผ ํ•ด์š”. ํŒจ๋”ฉ์ด ๋“ค์–ด๊ฐ€๋ฉด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”. ๊ทธ๋ž˜์„œ ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ํŒจ๋”ฉ์ด ํ•„์š” ์—†๋„๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”.

์ž, ์ด์ œ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ์„ ํ™œ์šฉํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ƒํ™ฉ๋“ค์„ ์‚ดํŽด๋ณผ๊นŒ์š”?

  1. ์„ฑ๋Šฅ ์ตœ์ ํ™”:
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํžˆ ์ •๋ ฌํ•˜๋ฉด CPU๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋” ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • ์บ์‹œ ๋ผ์ธ์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ์บ์‹œ ๋ฏธ์Šค๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์š”.
  2. ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ:
    • ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ, ํŒจ๋”ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ด์š”.
    • #pragma pack ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํŒจ๋”ฉ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์š”.
  3. ๋„คํŠธ์›Œํฌ ํ†ต์‹ :
    • ํŒจํ‚ท ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ํŒจ๋”ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ด์š”.
    • ๋ฐ”์ดํŠธ ์ •๋ ฌ(endianness)๋„ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•ด์š”.
  4. ํŒŒ์ผ ์ž…์ถœ๋ ฅ:
    • ๊ตฌ์กฐ์ฒด๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์„ ๋•Œ ํŒจ๋”ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ด์š”.
    • ํŒจ๋”ฉ ๋•Œ๋ฌธ์— ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ์ˆ˜ ์žˆ์–ด์š”.

์™€, ์ •๋ง ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋Š”๊ตฐ์š”! ๊ทธ๋Ÿผ ์ด์ œ ์‹ค์ œ ์ฝ”๋“œ๋กœ ํ•œ๋ฒˆ ์‚ดํŽด๋ณผ๊นŒ์š”? ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ„ ์ •๋ ฌ ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ๋“œ๋ฆด๊ฒŒ์š”.


#include <stdio.h>

// ์ตœ์ ํ™”๋˜์ง€ ์•Š์€ ๊ตฌ์กฐ์ฒด
struct BadStruct {
    char a;
    double b;
    int c;
    char d;
};

// ์ตœ์ ํ™”๋œ ๊ตฌ์กฐ์ฒด
struct GoodStruct {
    double b;
    int c;
    char a;
    char d;
    char padding[2]; // ๋ช…์‹œ์  ํŒจ๋”ฉ
};

int main() {
    printf("BadStruct์˜ ํฌ๊ธฐ: %zu ๋ฐ”์ดํŠธ\n", sizeof(struct BadStruct));
    printf("GoodStruct์˜ ํฌ๊ธฐ: %zu ๋ฐ”์ดํŠธ\n", sizeof(struct GoodStruct));
    return 0;
}

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด BadStruct๊ฐ€ GoodStruct๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์–ด์š”. GoodStruct๋Š” ๋ฉค๋ฒ„๋“ค์„ ํฌ๊ธฐ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•ด์„œ ํŒจ๋”ฉ์„ ์ตœ์†Œํ™”ํ–ˆ๊ฑฐ๋“ ์š”.

๊ตฌ์กฐ์ฒด ์ตœ์ ํ™” ๋น„๊ต ๊ตฌ์กฐ์ฒด ์ตœ์ ํ™” ๋น„๊ต a ํŒจ๋”ฉ b (double) c (int) d ํŒจ๋”ฉ BadStruct (32๋ฐ”์ดํŠธ) b (double) c (int) a d ํŒจ๋”ฉ GoodStruct (24๋ฐ”์ดํŠธ)

์œ„ ๊ทธ๋ฆผ์„ ๋ณด์„ธ์š”. BadStruct๋Š” ๋งŽ์€ ํŒจ๋”ฉ์ด ๋“ค์–ด๊ฐ€ ์žˆ์–ด 32๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•˜์ง€๋งŒ, GoodStruct๋Š” ๋ฉค๋ฒ„๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•ด 24๋ฐ”์ดํŠธ๋งŒ ์ฐจ์ง€ํ•ด์š”. ์ด๋ ‡๊ฒŒ ์ตœ์ ํ™”ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ์ค„์ด๊ณ , ์บ์‹œ ํšจ์œจ์„ฑ๋„ ๋†’์ผ ์ˆ˜ ์žˆ์–ด์š”!

์™€, ์ •๋ง ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฐฐ์› ์ฃ ? ์—ฌ๋Ÿฌ๋ถ„ ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ๐Ÿ‘๐Ÿ‘๐Ÿ‘ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ, ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์€ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋…์ด์—์š”. ์ด๊ฑธ ์ž˜ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์ด ํ›จ์”ฌ ๋” ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•  ๊ฑฐ์˜ˆ์š”.

๐Ÿ’ก Tip: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ์„ ๊ณ ๋ คํ•ด ์ฝ”๋”ฉํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์„ธ์š”. ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์ด๋‚˜ ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ… ๋ถ„์•ผ์—์„œ ์ผํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ์ด ์ง€์‹์ด ์ •๋ง ํฐ ๋„์›€์ด ๋  ๊ฑฐ์˜ˆ์š”!

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ๊ธด ์—ฌ์ •์ด ๋๋‚˜๊ฐ€๊ณ  ์žˆ์–ด์š”. ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ, ๊ตฌ์กฐ์ฒด ์ •๋ ฌ์— ๋Œ€ํ•ด ์ •๋ง ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์› ์ฃ ? ์ด ์ง€์‹์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ๋” ๋‚˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ํ™”์ดํŒ…! ๐Ÿ’ช๐Ÿ˜Š

๋งˆ๋ฌด๋ฆฌ: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ์˜ ์„ธ๊ณ„ ๐ŸŒŸ

์™€, ์ •๋ง ๊ธด ์—ฌ์ •์ด์—ˆ์ฃ ? ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ๊ณผ ํŒจ๋”ฉ, ๊ตฌ์กฐ์ฒด ์ •๋ ฌ๊นŒ์ง€... ์ •๋ง ๋งŽ์€ ๋‚ด์šฉ์„ ๋ฐฐ์› ์–ด์š”. ์—ฌ๋Ÿฌ๋ถ„ ์ •๋ง ๋Œ€๋‹จํ•ด์š”! ๐Ÿ‘๐Ÿ‘๐Ÿ‘

์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด๋ณผ๊นŒ์š”?

  1. ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. ํŒจ๋”ฉ: ๋ฉ”๋ชจ๋ฆฌ ์ •๋ ฌ์„ ์œ„ํ•ด ์ถ”๊ฐ€๋˜๋Š” ๋นˆ ๊ณต๊ฐ„
  3. ๊ตฌ์กฐ์ฒด ์ •๋ ฌ: ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ํšจ์œจ์ ์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  4. ์‹ค์ „ ์‘์šฉ: ์„ฑ๋Šฅ ์ตœ์ ํ™”, ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ˜ธํ™˜์„ฑ, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋“ฑ์—์„œ ํ™œ์šฉ

์ด ๋ชจ๋“  ๊ฐœ๋…๋“ค์ด ์ฒ˜์Œ์—๋Š” ์–ด๋ ค์›Œ ๋ณด์ผ ์ˆ˜ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ๊ฑฑ์ • ๋งˆ์„ธ์š”! ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์—ฐ์Šต์ด ๋‹ต์ด์—์š”. ๊ณ„์† ์ฝ”๋”ฉํ•˜๊ณ , ์‹คํ—˜ํ•ด๋ณด๊ณ , ์˜ค๋ฅ˜๋ฅผ ๊ฒช์–ด๋ณด๋ฉด์„œ ๋ฐฐ์šฐ๋Š” ๊ฑฐ์˜ˆ์š”.

์—ฌ๋Ÿฌ๋ถ„, ์ด์ œ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ˆจ์€ ๋น„๋ฐ€ ํ•˜๋‚˜๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ์–ด์š”. ์ด ์ง€์‹์„ ํ™œ์šฉํ•˜๋ฉด ๋” ํšจ์œจ์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”. ์•ž์œผ๋กœ์˜ ์ฝ”๋”ฉ ์ƒํ™œ์— ํฐ ๋„์›€์ด ๋  ๊ฑฐ์˜ˆ์š”!

๐Ÿ’ก ๋งˆ์ง€๋ง‰ Tip: ํ•ญ์ƒ ํ˜ธ๊ธฐ์‹ฌ์„ ๊ฐ€์ง€์„ธ์š”. "์™œ ์ด๋ ‡๊ฒŒ ๋™์ž‘ํ•˜์ง€?"๋ผ๋Š” ์งˆ๋ฌธ์„ ๊ณ„์† ๋˜์ง€๋ฉด์„œ ์ฝ”๋”ฉํ•˜์„ธ์š”. ๊ทธ๊ฒŒ ๋ฐ”๋กœ ์‹ค๋ ฅ ํ–ฅ์ƒ์˜ ๋น„๊ฒฐ์ด์—์š”!

์ž, ์ด์ œ ์ •๋ง ๋์ด์—์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค๋ ฅ์ด ํ•œ ๋‹จ๊ณ„ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜์š”? ์•ž์œผ๋กœ๋„ ๊ณ„์† ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜๊ณ  ์ฝ”๋”ฉํ•˜์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ์•ž๋‚ ์— ๋ฌดํ•œํ•œ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ต๋‹ˆ๋‹ค! ํ™”์ดํŒ…! ๐Ÿ’ช๐Ÿ˜Š