[C언어/C++] 메모리 복사 memcpy 함수 사용법 & 예제

이미 생성한 객체들을 여러개 만들어야 할때 물론 여러번 만들어줄수도 있지만 번거로울 수 있습니다. 이런 경우에는 이미 만들어 놓은 객체들을 복사해서 사용하면 편리한데요. memcpy함수를 사용하여 메모리를 다른곳으로 복사할 수 있습니다. 이번 포스팅에서는 memcpy함수의 사용법에 대해 알아보도록 하겠습니다.

 

memcpy 함수 사용법

#include <string.h>  //C언어
#include <cstring.h> //C++

void* memcpy (void* dest, const void* source, size_t num)

memcpy함수를 사용하기 위해서는 먼저 memcpy함수가 포함되어 있는 헤더를 포함시켜야 합니다. 헤더는 string.h에도 있고, memory.h에도 memcpy함수가 있습니다. 둘중 아무거나 포함해 주세요.

인자값
dest : 데이터가 복사될 곳을 가리키는 포인터
source : 복사할 데이터가 있는 위치를 가리키는 포인터
num : 복사할 바이트 수

리턴값
dest가 리턴됨

 

memcpy 함수 사용 예제

#include <string.h>
#include <stdio.h>

void main()
{
    char source[32] = "복사 대상 메모리";
    char dest[32] = "복사 될 메모리";

    printf("복사 전 : %s\n", dest);

    //src 메모리를 sizeof(src) 만큼 dest로 복사
    memcpy(dest, source, sizeof(source));

    printf("복사 후 : %s\n", dest);
}

memcpy 예제

위와 같이 memcpy함수를 사용하여 메모리를 다른곳으로 복사할 수 있습니다. 위의 예제에서는 문자열을 복사하였는데요. 문자열을 복사할때는 주의하실점이 몇가지 있습니다.

 

1. 복사 될 char배열의 크기가 충분한가?

2. \0문자까지 복사가 되었는가?

 

문자열을 복사할때는 위의 두가지를 꼭 체크해주시기 바랍니다. 복사될 문자열 크기가 복사될 문자열보다 크기가 작다면 제대로 복사가 되지 않을것이고 또한 복사될 크기에 일부의 크기만 넣는다면 \0문자가 복사되지 않아 문자열이 깨질수도 있습니다. 문자열을 복사할때는 꼭 sizeof()함수를 사용하여 길이를 넣어주도록 합시다. 만약 문자열의 일부분만 복사하고싶다면 마지막에 \0문자를 강제로 넣어주셔야 합니다.

댓글

Designed by JB FACTORY