[Libft][C] memory ํ•จ์ˆ˜ ๊ตฌํ˜„ (memset / memmove / memchr / bzero / calloc)

2025. 6. 2. 18:01ยท๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus

memset

void    *ft_memset(void *s, int c, size_t n)

๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ(๊ฐ’)์„ ์›ํ•˜๋Š” ํฌ๊ธฐ๋งŒํผ ํŠน์ • ๊ฐ’์œผ๋กœ ์„ธํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค. (memory + setting)

  • s: ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ
  • c: ์ฑ„์›Œ ๋„ฃ์„ ๊ฐ’ (1๋ฐ”์ดํŠธ์งœ๋ฆฌ). unsigned char ๋กœ ๋ณ€ํ™˜๋˜์–ด์„œ ์ €์žฅ๋œ๋‹ค.
  • n: ์ฑ„์šธ ๋ฐ”์ดํŠธ ์ˆ˜

 

memmove

void    *ft_memcpy(void *dest, const void *src, size_t n)
void    *ft_memmove(void *dest, const void *src, size_t n)

memmove๋Š” memcpy์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

memmove๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณต์‚ฌํ•œ๋‹ค.

  • dest == src: ๋ณต์‚ฌ ๋Œ€์ƒ๊ณผ ์›๋ณธ์ด ๊ฐ™์€ ์ฃผ์†Œ → ๋ณต์‚ฌํ•  ํ•„์š” ์—†์Œ
  • dest > src: ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๊ฒน์นจ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ → ๋’ค์—์„œ๋ถ€ํ„ฐ ๋ณต์‚ฌ
  • dest < src: ์•ž์—์„œ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•ด๋„ OK

 

dest > src ์˜ˆ์‹œ

: dest = src + 2

char str[] = "A B C D E F";
               ↑ ↑ ↑ ↑     ← src (str)
                 ↑ ↑ ↑ ↑   ← dest (str + 2)

 

memcpy(str + 2, str, 4) ์‚ฌ์šฉ ์‹œ (๋ฎ์–ด์“ฐ๊ธฐ ๋ฐœ์ƒ)

์ดˆ๊ธฐ ์ƒํƒœ:  [A][B][C][D][E][F]
๋ณต์‚ฌ ๋ชฉํ‘œ:      โ””โ”€โ”€โ”€โ”€→ ์—ฌ๊ธฐ 4๊ธ€์ž ๋ฎ์–ด์“ฐ๊ธฐ
์ค‘๊ฐ„ ๊ณผ์ •:      [A][B][A][B][C][D] ← ๊นจ์ง ๊ฐ€๋Šฅ์„ฑ

 

memmove(str + 2, str, 4) ์‚ฌ์šฉ ์‹œ (์•ˆ์ „ ๋ณต์‚ฌ)

์ดˆ๊ธฐ ์ƒํƒœ:  [A][B][C][D][E][F]
๋ณต์‚ฌ ๊ณผ์ •:  ์ž„์‹œ ๋ฒ„ํผ์— [A][B][C][D] ์ €์žฅ
๊ฒฐ๊ณผ:       [A][B][A][B][C][D] ← ์ •์ƒ ๋ณต์‚ฌ

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ dest๊ฐ€ src๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด ๋’ค์—์„œ๋ถ€ํ„ฐ ๋ณต์‚ฌํ•ด์•ผ ์•ˆ์ „ํ•˜๋‹ค.

 

memchr

void    *ft_memchr(const void *s, int c, size_t n)

s์˜ ์•ž์—์„œ๋ถ€ํ„ฐ n ๋ฐ”์ดํŠธ๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด์„œ, c์™€ ์ผ์น˜ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๋ฅผ ์ฐพ์•„์„œ ๊ทธ ์œ„์น˜์˜ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ชป ์ฐพ์œผ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • s: ๊ฒ€์ƒ‰ํ•  ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘ ์ฃผ์†Œ
  • c: ์ฐพ์„ ๋ฐ”์ดํŠธ ๊ฐ’ (์ •์ˆ˜ํ˜•์ด์ง€๋งŒ ๋‚ด๋ถ€์—์„œ unsigned char๋กœ ์บ์ŠคํŒ…๋จ)
  • n: ๊ฒ€์ƒ‰ํ•  ๋ฐ”์ดํŠธ ์ˆ˜

 

bzero

void    ft_bzero(void *s, size_t n)

s๋ถ€ํ„ฐ n ๋ฐ”์ดํŠธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค. (๋ฌธ์ž ๊ธฐ์ค€์œผ๋ก  \0, ์ˆซ์ž ๊ธฐ์ค€์œผ๋ก  0)

 

calloc

void    *ft_calloc(size_t nmemb, size_t size)

count × size ๋ฐ”์ดํŠธ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๊ณ , ์ „๋ถ€ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.
(ํฌ์ธํ„ฐ์—์„  NULL, int์—์„  0, char์—์„  \0)

  • count: ํ•  ๋‹นํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜ (์˜ˆ: ๋ฐฐ์—ด ํฌ๊ธฐ)
  • size: ๊ฐ ์š”์†Œ์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ (์˜ˆ: sizeof(int))

'๐Ÿƒโ€โ™€๏ธ Activities > 42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)  (0) 2025.06.02
[Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)  (0) 2025.06.02
[C] void & void *ํƒ€์ž… / ํฌ์ธํ„ฐ ์—ฐ์‚ฐ  (0) 2025.06.02
[Makefile] PHONY  (1) 2025.05.30
[Makefile] SRC / OBJ / NAME  (0) 2025.05.30
'๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Libft][C] ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) ํ•จ์ˆ˜ ๊ตฌํ˜„ (lstadd_front, lstdelone, lstmap)
  • [Libft][C] string ํ•จ์ˆ˜ ๊ตฌํ˜„ (strlcpy / strlcat / strchr / strnstr / substr / strtrim / strmapi / striteri)
  • [C] void & void *ํƒ€์ž… / ํฌ์ธํ„ฐ ์—ฐ์‚ฐ
  • [Makefile] PHONY
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋งต
    VR
    dynamic programming
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    react
    java
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    42๊ฒฝ์‚ฐ
    HTML
    git
    knapsack
    makefile
    La Piscine
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    .h
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๊ตฌํ˜„
    unity
    github
    ๋ฐฑ์ค€
    dfs
    swea
    BFS
    CSS
    ์ •๋ ฌ
    ํŠธ๋ฆฌ
    CS
    C
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[Libft][C] memory ํ•จ์ˆ˜ ๊ตฌํ˜„ (memset / memmove / memchr / bzero / calloc)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”