[C언어/C++] 메모리 복사 memcpy 함수 사용법 & 예제
- Language/C , C++ , C#
- 2021. 2. 11.
이미 생성한 객체들을 여러개 만들어야 할때 물론 여러번 만들어줄수도 있지만 번거로울 수 있습니다. 이런 경우에는 이미 만들어 놓은 객체들을 복사해서 사용하면 편리한데요. 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함수를 사용하여 메모리를 다른곳으로 복사할 수 있습니다. 위의 예제에서는 문자열을 복사하였는데요. 문자열을 복사할때는 주의하실점이 몇가지 있습니다.
1. 복사 될 char배열의 크기가 충분한가?
2. \0문자까지 복사가 되었는가?
문자열을 복사할때는 위의 두가지를 꼭 체크해주시기 바랍니다. 복사될 문자열 크기가 복사될 문자열보다 크기가 작다면 제대로 복사가 되지 않을것이고 또한 복사될 크기에 일부의 크기만 넣는다면 \0문자가 복사되지 않아 문자열이 깨질수도 있습니다. 문자열을 복사할때는 꼭 sizeof()함수를 사용하여 길이를 넣어주도록 합시다. 만약 문자열의 일부분만 복사하고싶다면 마지막에 \0문자를 강제로 넣어주셔야 합니다.
'Language > C , C++ , C#' 카테고리의 다른 글
[C언어/C++] 특정 문자 찾기/검색 &치환 strchr 함수 사용법 & 예제 (0) | 2021.02.12 |
---|---|
[C언어/C++] 메모리 이동 memmove 함수 사용법 & 예제 (0) | 2021.02.12 |
[C언어/C++] 메모리 초기화 memset 함수 사용법 & 예제 (1) | 2021.02.11 |
[C언어] 동적 배열 생성하기 (1차원, 2차원) (1) | 2021.02.10 |