본문 바로가기

카테고리 없음

memcpy 함수를 사용하는 방법과 예제

1. memcpy 함수란

memcpy 함수는 C/C++ 프로그래밍에서 사용되는 함수 중 하나로, 메모리의 일정 영역에 있는 데이터를 다른 메모리 영역으로 복사하는 역할을 합니다. 이 함수는 <string.h> 헤더 파일에 정의되어 있으며, 메모리 영역의 크기를 지정하여 복사하고자 하는 데이터를 목적지 메모리 영역으로 복사합니다. memcpy 함수는 주로 배열, 구조체 등의 메모리 데이터를 복사할 때 사용됩니다.

memcpy 함수는 보통 다음과 같은 형식으로 사용됩니다.

void *memcpy(void *dest, const void *src, size_t n);
  • dest: 복사하고자 하는 데이터가 저장될 목적지 메모리 영역을 가리키는 포인터
  • src: 복사하고자 하는 데이터가 저장된 시작 위치를 가리키는 포인터
  • n: 복사할 데이터의 크기 (바이트 단위)

memcpy 함수는 dest 포인터가 가리키는 메모리 영역으로 src 포인터가 가리키는 메모리 영역의 데이터를 n 바이트 만큼 복사합니다.

이제 memcpy 함수의 사용법을 알아보도록 하겠습니다.

2. memcpy 함수 사용법

memcpy 함수를 사용하여 데이터를 복사하는 방법은 다음과 같습니다.

#include <string.h>

void *memcpy(void *dest, const void *src, size_t n);
  • dest: 복사하고자 하는 데이터가 저장될 목적지 메모리 영역의 포인터
  • src: 복사하고자 하는 데이터가 저장된 시작 위치를 가리키는 포인터
  • n: 복사할 데이터의 크기 (바이트 단위)

memcpy 함수를 호출하면, src 포인터가 가리키는 메모리 영역으로부터 dest 포인터가 가리키는 메모리 영역으로 n 바이트 만큼의 데이터가 복사됩니다. 이때, dest 포인터는 복사된 데이터를 저장하기 위한 메모리 영역을 가리켜야 하며, 이 영역은 이미 할당되어 있어야 합니다. src 포인터는 복사될 데이터가 저장된 시작 위치를 가리키며, n은 복사할 데이터의 크기를 바이트 단위로 지정합니다.

memcpy 함수의 반환값은 dest 포인터입니다. 이는 복사가 완료된 후의 목적지 메모리 영역을 가리키게 됩니다.

이제 memcpy 함수 사용법에 대한 예제를 살펴보겠습니다.

3. memcpy 함수 예제

아래는 memcpy 함수를 사용하여 데이터를 복사하는 간단한 예제입니다.

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

int main() {
    char src[] = "Hello, World!";
    char dest[20];

    memcpy(dest, src, strlen(src) + 1);

    printf("복사된 문자열: %s\n", dest);

    return 0;
}

위의 예제에서는 "Hello, World!" 문자열을 src 배열에 저장하고, dest 배열에는 해당 문자열을 복사하기 위해 memcpy 함수를 사용합니다.

memcpy 함수의 첫 번째 인자로 dest 배열의 포인터를 전달하고, 두 번째 인자로 src 배열의 포인터를 전달합니다. 세 번째 인자로는 복사할 데이터의 크기를 strlen(src) + 1로 전달합니다. 이때, strlen 함수는 문자열의 길이를 구해주는 함수이며, +1은 NULL 문자('\0')를 포함하여 복사하기 위함입니다.

그리고 복사된 문자열을 출력하기 위해 printf 함수를 사용하여 dest 배열을 출력합니다.

위의 예제를 실행하면, "Hello, World!" 문자열이 성공적으로 복사되어 출력됩니다.

이처럼 memcpy 함수를 사용하여 메모리의 데이터를 복사하면, 원본 데이터를 보존한 채로 데이터를 복사할 수 있습니다.