SWjungle/#malloc

[malloc] ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

์žฅ์˜ 2023. 9. 8. 21:10

๐Ÿ“Œ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

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

๐Ÿ’ก๋™์ ํ• ๋‹น์„ ํ•˜๋Š” ์ด์œ ?

  • char name [100];
  • name ๋ฐฐ์—ด์€ ์ตœ๋Œ€ 100๊ฐœ ๊นŒ์ง€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ง‰์ƒ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ ์‹œ์ผœ์„œ 10๊ธ€์ž๋งŒ ์ž…๋ ฅํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด 90๋ฐ”์ดํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋ ? ๊ทธ๋ƒฅ ๋‚ญ๋น„๊ฐ€ ๋˜๋Š”๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ 100๊ธ€์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ 110๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๊ฒƒ ๋˜ํ•œ ๋ฌธ์ œ์ด๋‹ค.
  • ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋‹ค. ๋™์ ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค๋Š” ๋ง์€, ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋œ ํ›„์— ํ•„์š”์— ๋”ฐ๋ผ์„œ ๊ทธ๋–„ ๊ทธ๋–„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ  ์ €์žฅํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์œ„์™€ ๊ฐ™์€ ์˜ˆ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ๊ณต๊ฐ„์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด ๋†“์ง€ ์•Š๊ณ  ๊ทธ๋–„ ๊ทธ๋–„ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ๋˜๋Š” ์‹œ๊ฐ„์— 10๊ธ€์ž๋ฉด 10๋ฐ”์ดํŠธ , 110๊ธ€์ž์ด๋ฉด 110๋ฐ”์ดํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ž๋Š” ์˜๋„์ด๋‹ค.

 

๐Ÿ“Œmalloc()

  • c์—์„œ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต malloc ๊ณ„์—ด์˜ ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • void* malloc(size_t size)//mallocํ•จ์ˆ˜์˜ ์›ํ˜•
  • ๋ง๋ก์€ void* ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค ๋”ฐ๋ผ์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. size_t๋Š” unsignde int๋ฅผ typedef ํ•ด๋†“์€ ๊ฒƒ์ด๋‹ค. ํ• ๋‹นํ•  ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์Œ์ˆ˜๊ฐ’์ด ๋ ๋ฆฌ๋Š” ์—†๊ธฐ์— unsigned๋กœ ์ •ํ•ด๋†“์€ ๊ฒƒ์ด๋‹ค. size์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์จ์ฃผ๋ฉด ๋œ๋‹ค.
  • malloc ํ•จ์ˆ˜๋Š” size๋งŒํผ ๋ฐ”์ดํŠธ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ํ•  ๋‹นํ•œ ํ›„ ๊ทธ ์ฒซ๋ฒˆ์จฐ ์ฃผ์†Œ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์ฃผ๋ฉฐ ๊ทธ ํƒ€์ž…์€ void*์ด๋‹ค
  • ์™œ void* ์„ ๋ฆฌํ„ดํ•˜๋Š” ์ด์œ ๋Š” ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•˜๋Š”๋ฐ ์ •์ˆ˜๋ฅผ ์ €์žฅํ• ์ง€, ๋ฐฐ์—ด์„ ์ €์žฅํ• ์ง€, ๊ตฌ์กฐ์ฒด๋ฅผ ์ €์žฅํ• ์ง€ ์‹ค์ง์ ์œผ๋กœ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • char* pi =(char* p) malloc (sizeof(int)*10);
  • //char 10๊ฐœ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ณ  ๊ทธ ์ฒซ๋ฒˆ์จฐ ์ฃผ์†Œ๋ฅผ charํ˜•์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜์—ฌ pi์— ์ €์žฅ

 

๐Ÿ“Œcalloc()

  • void* colloc(size_t n , size_t size)
  • malloc๊ณผ ๋‹ฌ๋ฆฌ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 2๊ฐœ์ด๋‹ค. ์•ž์— n์€ ํ• ๋‹นํ•  ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‹จ์œ„ ๊ฐฏ์ˆ˜์ด๋ฉฐ, ๋’ค์— size๋Š” ํ•˜๋‚˜๋‹น ํฌ๊ธฐ๋ฅผ ์ด์•ผ๊ธฐ ํ•œ๋‹ค. ํ•œ๋งˆ๋””๋กœ 4๊ฐœx4๋ฐ”์ดํŠธ, 10๊ฐœ 1๋ฐ”์ดํŠธ์™€ ๊ฐ™์€๊ฒƒ์ด๋‹ค.
  • malloc๊ณผ ๋‹ค๋ฅธ์ ์€ malloc์€ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•„์„œ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ  ๋“ค์–ด๊น„์ง€๋งŒ, callocํ•จ์ˆ˜๋Š” ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋ชจ๋‘ 0 ์œผ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ค€๋‹ค. 


๐Ÿ“Œ์‹œ์Šคํ…œ ์ฝœ

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

 

๐Ÿ“Œ sbrk / mmap ํ•จ์ˆ˜

  • brk, sbrk ์‹œ์Šคํ…œ์ฝœ์€ malloc ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์‹œ์Šคํ…œ์ฝœ์ด๋‹ค. malloc ํ•จ์ˆ˜ ์‹คํ–‰ ํ›„ ์‹ค์ œ ๋ฉ”๋กœ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ›๊ธฐ ์œ„ํ•ด์„  brk, sbrk, ๋˜๋Š”  mmap ์‹œ์Šคํ…œ ์ฝœ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.

#include <unistd.h>
#include <sys/mman.h>

void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);

 

๐Ÿ“Œ๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ

  • ํ”„๋กœ์„ธ์„œ๋Š” cpu๊ฐ€ ์‹คํ–‰ํŒŒ์ผ์— ์žˆ๋Š” ๋ช…๋ น๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก OS๊ฐ€ ์‹คํ–‰ ํŒŒ์ผ์˜ ๋ช…๋ น๋“ค์„ ์ฝ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์žฌ๊ตฌ์„ฑํ•œ ๊ฒƒ์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์„ธ๊ทธ๋จผํŠธ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

๐Ÿ’ก์ฝ”๋“œ ์„ธ๊ทธ๋จผํŠธ

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

๐Ÿ’ก๋ฐ์ดํ„ฐ ์„ธ๊ทธ๋จผํŠธ

  • ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ •์  ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๋Š” ์˜์—ญ
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋  ๋•Œ ํ• ๋‹น๋˜์–ด, ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒํ•˜๋ฉด ์†Œ๋ฉธ๋จ
    • ์ „์—ญ ๋ณ€์ˆ˜ : ํ•จ์ˆ˜ ์™ธ๋ถ€์— ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘ํ•  ๋•Œ ์ƒ์„ฑ๋˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚   ๋•Œ ์†Œ๋ฉธ
    • ์ •์  ๋ณ€์ˆ˜  : ์„ ์–ธํ•œ ์œ„์น˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ๋๋‚  ๋•Œ ์†Œ๋ฉธ

๐Ÿ’ก์Šคํƒ ์„ธ๊ทธ๋จผํŠธ

  • ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜๊ณ  ํ•ด์ œ๋˜๋Š” ์˜์—ญ
  • ํ•„์š”์— ์˜ํ•ด ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์‚ฌ์šฉ
  • ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ด€๋ฆฌ
  • ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘์‹œ์— ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋จ
  • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ’์— ์˜ํ•ด์„œ๋งŒ ์ฐธ์กฐ๋˜๊ณ  ์‚ฌ์šฉ๋˜๋Š” ์˜์—ญ
    1. ํž™ (heap)  : ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ฎ์€ ์ฃผ์†Œ์—์„œ ๋†’์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น๋จ
    2. ์ง€์—ญ๋ณ€์ˆ˜ ( stack ) : ๋ฉ”๋ชจ๋ฆฌ์˜ ๋†’์€ ์ฃผ์†Œ์—์„œ ๋‚ฎ์€ ์ฃผ์†Œ์˜ ๋ฐฉํ–ฅ์œผ๋กœ ํ• ๋‹น
#include <stdio.h>

int x = 1;              // Data ์˜์—ญ
int y;                  // BSS ์˜์—ญ: ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ(์ „์—ญ ๋ณ€์ˆ˜)

int main(){
    int z;                  // Stack ์˜์—ญ: ์ง€์—ญ ๋ณ€์ˆ˜
    static int st_a;        // BSS ์˜์—ญ
    static int st_b = 1;    // Data ์˜์—ญ: static
    char* c;                // Stack ์˜์—ญ
    c = malloc(10);         // Heap ์˜์—ญ
    y = 2;                  // Code ์˜์—ญ
 
    return 0;
}

 

๐Ÿ“Œ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น malloc() , free()

  • ์œ„ ๊ทธ๋ฆผ์€ 18์›Œ๋“œ์˜ ์ž‘์€ ํž™์„ malloc๊ณผ free์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค
  • ๊ทธ๋ฆผ a : 4์›Œ๋“œ ๋ธ”๋ก์„ ์š”์ฒญํ•˜๋ฉฐ, ์ด ๋ธ”๋ก์˜ ์ฒซ ๋ฒˆ์งธ ์›Œ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ๊ทธ๋ฆผ b : 5์›Œ๋“œ ๋ธ”๋ก์„ ์š”์ฒญํ•˜๋ฉฐ, 6์›Œ๋“œ ๋ธ”๋ก์„ ํ• ๋‹นํ•˜๋Š”๋ฐ ์ด์œ ๋Š” ์ด ์˜ˆ์ œ๊ฐ€ ๋”๋ธ” ์›Œ๋“œ ๊ฒฝ๊ณ„์— ์ •๋ ฌ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด 1์›Œ๋“œ๊ฐ€ ์ถ”๊ฐ€ ํŒจ๋”ฉ ๋œ ๊ฒƒ์ด๋‹ค.
์ •๋ ฌ ์ œํ•œ ์กฐ๊ฑด
์ •๋ ฌ ์ œํ•œ ์กฐ๊ฑด์ด๋ž€ ํ• ๋‹น๊ธฐ์— ๋ธ”๋ก์„ ํ• ๋‹น ์‹œ ๋ธ”๋ก๋“ค์ด ๊ฐ€์ง€๋Š” byte์˜ ์ˆ˜๊ฐ€ ์ •๋ ฌ ์กฐ๊ฑด์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ฑ…์—์„œ๋Š” ๋”๋ธ”์›Œ๋“œ(8byte)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•๋ณดํ•œ๋‹ค๋ฉด ํ—ค๋”(4byte) + ๋ฐ์ดํ„ฐ(8byte)๊ฐ€ ๋˜์–ด 12byte๊ฐ€ ํ•„์š”ํ•œ๋ฐ ๋”๋ธ” ์›Œ๋“œ ์ •๋ ฌ ์กฐ๊ฑด์œผ๋กœ byte๊ฐ€ 8์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํŒจ๋”ฉ 4byte ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ 8์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋งž์ถฐ์ค€๋‹ค.
  • ๊ทธ๋ฆผ c : 6์›Œ๋“œ ๋ธ”๋ก์„ ์š”์ฒญํ•˜๋ฉฐ, malloc์€ ๊ฐ€์šฉ ๋ธ”๋ก์—์„œ 6์›Œ๋“œ ๋ธ”๋ก์„ ํ• ๋‹น
  • ๊ทธ๋ฆผ d : free๋กœ ํ˜ธ์ถœ์ด ๋ฆฌํ„ด๋œ ํ›„์— ํฌ์ธํ„ฐ p2๋Š” ์—ฌ์ „ํžˆ malloc๋œ ๋ธ”๋ก์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ๊ทธ๋ฆผ e : 2์›Œ๋“œ ๋ธ”๋ก์„ ์š”์ฒญํ•˜๋ฉฐ, ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋ฐ˜ํ™˜๋œ ๋ธ”๋ก์˜ ๋ถ€๋ถ„์„ ํ• ๋‹นํ•˜๊ณ , ์ƒˆ๋กœ์šด ๋ธ”๋ก์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

๐Ÿ“Œ๋ฌต์‹œ์  ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ

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

๋ณดํ†ต ํ•˜๋‚˜์˜ ๋ธ”๋ก์€ 4๋ฐ”์ดํŠธ๋‚˜ 8๋ฐ”์ดํŠธ๋กœ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ, ๊ทธ๊ฑธ ๋ถ€๋ฅด๋Š” ๋‹จ์œ„๋ฅผ word๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค, ๋”ฐ๋ผ์„œ 1์›Œ๋“œ๋Š” 4๋ฐ”์ดํŠธ๊ณ , ๋”๋ธ” ์›Œ๋“œ๊ฐ€ ๋  ๊ฒฝ์šฐ 8๋ฐ”์ดํŠธ๊ฐ€ ๋œ๋‹ค. ๋ธ”๋ก ํฌ๊ธฐ๋Š” ๋Œ€๊ฐœ 4์˜ ๋ฐฐ์ˆ˜ ํ˜น์Šจ 8์˜ ๋ฐฐ์ˆ˜๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
  • ์ฒซ ์ธต์€ ๋ธ”๋ก์˜ ํ—ค๋”๋กœ์„œ ๋ธ”๋ก ํฌ๊ธฐ์™€ ๊ฐ€์šฉ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ฐ€์šฉ ์—ฌ๋ถ€๋Š” 3์ž๋ฆฌ ๋น„ํŠธ๋กœ ์ด๋ฃจ์–ด ์ง„๋‹ค. ๋งˆ์ง€๋ง‰ ๋น„ํŠธ์˜ 0๊ณผ 1๋กœ ํ• ๋‹น๊ณผ ๊ฐ€์šฉ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์•ž ๋’ค 2์ž๋ฆฌ๊ฐ€ ์™œ ์žˆ๋ƒ๋ฉด, ๋ธ”๋ก ํฌ๊ธฐ๋Š” 16์ง„์ˆ˜ ๋น„ํŠธ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ๊ฐ€์šฉ ์—ฌ๋ถ€ ๋˜ํ•œ 16์ง„์ˆ˜ ๋น„ํŠธ๋กœ ๊ตฌ์„ฑํ•ด์•ผ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ํ•˜๋‚˜์˜ 16์ง„์ˆ˜๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๋‘๋ฒˆ์งธ ์ธต์€ ๋ฐ์ดํ„ฐ์ด๋‹ค. ํ• ๋‹น๋œ ๋ธ”๋ก์˜ ๊ฒฝ์šฐ ํŠน์ •ํ•œ ์ž๋ฃŒ๊ฐ€ ๋‹ด๊ธด๋‹ค.
  • ์„ธ๋ฒˆ์งธ ์ธต์€ ํŒจ๋”ฉ์ด๋‹ค. ํŒจ๋”ฉ์€ ๋ธ”๋ก์˜ ํฌ๊ธฐ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋“ค์–ด๊ฐ„๋‹ค. ๋ธ”๋ก์˜ ํฌ๊ธฐ๋Š” ๊ทœ๊ฒฉํ™” ๋˜์–ด์•ผ ํšจ์œจ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ๋ธ”๋ก ํฌ๊ธฐ๊ฐ€ ๋‹ค ๋‹ค๋ฅด๋‹ค๋ฉด ์ปดํ“จํ„ฐ๋Š” ๋ธ”๋ก์„ ๋‹ค ๋”ฐ๋กœ๋”ฐ๋กœ ๊ณ„์‚ฐํ•ด์•ผํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ํฌ๊ธฐ๊ฐ€ 2byte์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋ฉด, ์ปดํ“จํ„ฐ๋Š” 16byte ๋ธ”๋ก์„ ํ• ๋‹นํ•  ๊ฒƒ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด header์™€ footer๋Š” ๋ฌด์กฐ๊ฑด ๋“ค์–ด๊ฐ€์•ผํ•˜๋Š”๋ฐ, ์ด๋“ค์€ ๊ฐ๊ฐ 4๋ฐ”์ดํŠธ์”ฉ์ด๋‹ค.

 

2+4+4 = 10๋ฐ”์ดํŠธ๋กœ ์ƒ์„ฑ ์š”๊ฑด์„ ์ถฉ์กฑํ•˜์˜€์ง€๋งŒ, ๋ฐฉ๊ธˆ ๋งํ–ˆ๋“ฏ์ด ๊ทœ๊ฒฉํ™” ํ•ด์•ผํ•˜๊ณ  8์˜ ๋ฐฐ์ˆ˜ ๋“ฑ์œผ๋กœ ๋ฌด์กฐ๊ฑด ์ •๋ ฌ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฏธ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š” ์ž๋ฃŒ๊ฐ€ 8byte๋ฅผ ๋„˜์œผ๋‹ˆ 6๋ฐ”์ดํŠธ๋ฅผ ๋”ํ•ด 16๋ฐ”์ดํŠธ ๋ธ”๋ก์„ ํ• ๋‹นํ•œ๋‹ค.

์ด๋•Œ ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•ด 6๋ฐ”์ดํŠธ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

  • ๋งˆ์ง€๋ง‰ ์ธต์€ ๋ธ”๋ก์˜ ํ‘ธํ„ฐ๋กœ์„œ ํ—ค๋”์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ตณ์ด 2๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š”
  • ์‹œ๊ฐ„์ ์œผ๋กœ ๋ธ”๋ก์˜ ์—ฐ๊ฒฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ธฐ ๋–„๋ฌธ์ด๋‹ค. donald knuth๋ผ๋Š” ์‚ฌ๋žŒ์ด ๊ฒฝ๊ณ„ ํƒœ๊ทธ๋ผ๋Š” ๊ธฐ๋ฒ•์„ ๊ฐœ๋ฐœํ–ˆ๋Š”๋ฐ, ๊ฐ ๋ธ”๋ก์ด ํ‘ธํ„ฐ๋ฅผ ํฌํ•จํ•˜๊ฒŒ ๋˜๋ฉด ํ• ๋‹น๊ธฐ๋Š” ์‹œ์ž‘ ์œ„์น˜์™€ ์ด์ „ ๋ธ”๋ก์˜ ์ƒํƒœ๋ฅผ ์ž์‹ ์˜ ํ‘ธํ„ฐ๋งŒ ์กฐ์‚ฌํ•ด์„œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ „ ๋ธ”๋ก์€ ํ•ญ์ƒ ํ˜„์žฌ ๋ธ”๋ก์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ 1word ์•ž์— ์œ„์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ‘ธํ„ฐ๋ฅผ ๋„ฃ์Œ์œผ๋กœ์จ ์ด์ „ ๋ธ”๋ก๊ณผ ๋‹ค์Œ ๋ธ”๋ก์˜ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก , ์žฅ์ ๋งŒ ์žˆ๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ธ”๋ก์ด ํ—ค๋”์™€ ํ‘ธํ„ฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ธ”๋กœ๊ทธ์ด ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ•ด๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์ด ์—ฐ์†๋œ ๋ฐฐ์—ด์€ ๊ฐ€์šฉ๋ฆฌ์ŠคํŠธ๋‹ค. ์‹ค์ œ malloc ๊ตฌํ˜„ํ• ๋•Œ ์“ฐ์ด๋Š” ๊ฐœ๋…์ด๋‹ค.

  • ํŒจ๋”ฉ : ์œ„์— ์„ค๋ช…ํ•œ ์šฉ๋„์˜ ํŒจ๋”ฉ๊ณผ ๋˜‘๊ฐ™๋‹ค.
  • ํ”„๋กค๋กœ๊ทธ ํ—ค๋”, ํ‘ธํ„ฐ : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ๋ฐ˜ํ™˜ํ•˜๋‹ค๋ณด๋ฉด ๋ธ”๋ก์„ ์—ฐ๊ฒฐํ•ด์•ผ ํ•  ์ผ์ด ์ƒ๊ธด๋‹ค. ๊ทธ ์—ฐ๊ฒฐ ๊ณผ์ • ๋™์•ˆ์— ๊ฐ€์žฅ์ž๋ฆฌ ์กฐ๊ฑด์„ ์—†์• ๊ธฐ ์œ„ํ•œ ํŠธ๋ฆญ
  • ์—ํ•„๋กœ๊ทธ ํ—ค๋” : ์—ํ•„๋กœ๊ทธ ํ—ค๋” ๋˜ํ•œ ํ”„๋กค๋กœ๊ทธ์™€ ๊ฐ™์€ ์ผ์ข…์˜ ํŠธ๋ฆญ์ด๋‹ค.
  • header, footer : ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋Ÿญ์˜ ํ—ค๋”์™€ ํ‘ธํ„ฐ์ด๋‹ค. ์œ„์— ๋ธ”๋ก ๊ทธ๋ฆผ์—์„œ ์„ค๋ช…ํ•œ ํ—ค๋”์™€ ํ‘ธํ„ฐ๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ๋จ
  • mallocํ”„๋กœ๊ทธ๋žจ์€ ์ „์ฒด ํž™์—์„œ ์ด ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ• ๋‹นํ•œ ๋‹ค์Œ, ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์— ๋ธ”๋ก์„ ํ• ๋‹น & ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ฐ€์šฉ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋„˜์น˜๋ฉด ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋นผ๋Š” ์‹์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋œ๋‹ค.

๐Ÿ“Œํ• ๋‹นํ•  ๋ธ”๋ก ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•

  1. First fit
    ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ด์„œ ํฌ๊ธฐ๊ฐ€ ๋งž๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฐ€์šฉ ๋ธ”๋ก์„ ์„ ํƒํ•œ๋‹ค.
  2. Next fit
    First fit๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๊ฒ€์ƒ‰์„ ๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋Œ€์‹ ์— ๊ฒ€์ƒ‰์ด ์ข…๋ฃŒ๋œ ์ง€์ ์—์„œ ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
  3. Best fit
    ๋ชจ๋“  ๊ฐ€์šฉ ๋ธ”๋ก์„ ๊ฒ€์‚ฌํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ๋งž๋Š” ๋ธ”๋ก ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๋ธ”๋ก์„ ์„ ํƒํ•œ๋‹ค.

๐Ÿ“Œ๊ฒฝ๊ณ„ ํƒœ๊ทธ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ

  • ๋งŒ์•ฝ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฐ€์šฉ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๋ธ”๋ก์ด ํ˜„์žฌ๋ธ”๋ก์ด๋ผ๊ณ  ํ• ๋•Œ, ๋‹ค์Œ ๊ฐ€์šฉ ๋ธ”๋ก์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค. ํ˜„์žฌ ๋ธ”๋ก์˜ ํ—ค๋”์˜ ์ฃผ์†Œ์—์„œ ํ—ค๋”์˜ ํฌ๊ธฐ๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋‹ค์Œ ๋ธ”๋ก์˜ ํ—ค๋”๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ „ ๋ธ”๋ก์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์—์„œ๋ถ€ํ„ฐ ๋‹ค์‹œ ํƒ์ƒ‰ํ•ด์•ผ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์œ„ ๊ฐ€์šฉ ๋ธ”๋กํ•˜๋Š” ๊ณผ์ •์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ก์— ์ƒˆ๋กœ์šด ์š”์†Œ ํ‘ธํ„ฐ๊ฐ€ ์ถ”๊ฐ€ ๋œ๋‹ค.

๐Ÿ’ก์—ฐ๊ฒฐํ•˜๋Š” ๋„ค๊ฐ€์ง€ ๊ฒฝ์šฐ

 

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

 

๐Ÿ“Œ๋‹จํŽธํ™”

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”
- ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ ์ ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ
๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์กด์žฌํ•˜์ง€๋งŒ ํ• ๋‹น(์‚ฌ์šฉ)์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ

๐Ÿ’ก๋‚ด๋ถ€ ๋‹จํŽธํ™”

  • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณด๋‹ค ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋‚ญ๋น„ํ•  ๋•Œ

๐Ÿ’ก์™ธ๋ถ€ ๋‹จํŽธํ™”

  • ์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์€ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผํ•œ ๊ฐ€์šฉ ๋ธ”๋ก์ด ์—†์„ ๋•Œ ๋ฐœ์ƒ

  • ์œ„ ๊ทธ๋ฆผ์—์„œ ํŒŒ๋ž€ ๋ถ€๋ถ„์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ƒํƒœ ํฐ์ƒ‰์€ ๊ฐ€์šฉ ์ƒํƒœ ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๋งŒ์•ฝ ์œ„์˜ ์ƒํƒœ์—์„œ 8๋ธ”๋ก์„ ์š”์ฒญํ•˜๋ฉด ๊ฐ€์šฉ ๋ธ”๋ก์˜ ์ˆ˜(ํฐ์ƒ‰)๋Š” 8๊ฐœ๋กœ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ 
  • ๋‹จ์ผ ๊ฐ€์šฉ ๋ธ”๋ก์€(6๊ฐœ p2์™€ p3 ์‚ฌ์ด)๋Š” 8๊ฐœ๊ฐ€ ๋˜์ง€ ์•Š์•„ ์™ธ๋ถ€ ๋‹จํŽธํ™”๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.