OneDev
[C] memcpy 본문
◎ memcpy
- 포함 헤더 : <string.h> ( C++에서는 <cstring> )
- 메모리의 일부분을 복사한다
- 기본형 :
void* memcpy(void* destination, const void* source, size_t num);
- soure 가 가리키는 곳 부터 num 바이트 만큼을 destination이 가리키는 곳에 복사한다
- 리턴값 : destination
- 단순히 이진데이터를 복사하는 함수기 때문에 destination 과 source 의 타입은 함수와 무관하다
- source 의 널 종료 문자를 검사하지 않고, 언제나 정확히 num 바이트 만큼을 복사한다
- 오버플로우를 방지하기 위해 destination 과 source 가 가리키는 배열의 크기는 반드시 num 바이트 이상이어야 하고, 서로 겹치면 안된다 ( 만일 두 메모리 블록이 겹쳐있다면 memmove 함수를 이용하는 것이 낫다)
인자 | 설명 |
destination | 데이터가 복사될 곳의 주소, void * 형으로 형 변환되어 전달된다 |
source | 복사할 데이터들이 있는 주소, void * 형으로 형 변환되어 전달된다 |
num | 복사할 데이터의 바이트 수 |
(예제)
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Sample string";
char str2[40];
char str3[40];
memcpy(str2, str1, strlen(str1) + 1); // NULL 문자 때문에 1을 더한 길이 만큼을 복사
memcpy(str3, "copy successful", 16); // str3에 "copy successful\0" 을 복사해 넣는다
printf("str1: %s\nstr2: %s\nstr3: %s\n", str1, str2, str3);
return 0;
}
(예제 실행 결과)
'Language > C' 카테고리의 다른 글
[C] typedef 키워드 (0) | 2023.08.14 |
---|---|
[C] 24. 매크로 함수 & 인라인(inline) 함수 (0) | 2023.08.10 |
[C] 23. 메모리 동적 할당(Dynamic Memory Allocation) - malloc, free (0) | 2023.07.31 |
[C] 22. 전처리기 (preprocessor) (#include, #define, #error, #ifdef) (0) | 2023.07.26 |
[C] 21. 구조체(struct) (0) | 2023.07.21 |
Comments