안녕하세요. BlockDMask 입니다. 그럼 오늘의 함수 memcpy 시작해보겠습니다. <목차> 1. 메모리 복사 memcpy 함수 memcpy는 memory + copy입니다. 즉 메모리의 값을 복사하는 기능을 하는 함수 입니다. 헤더파일 C언어 <string.h>, C++ <cstring> void* memcpy (void* dest, const void* source, size_t num) 첫번째 인자 void* dest 두번째 인자 const void*
source 세번째 인자 size_t num 두번째 인자(source)에 있는 원본을 세번째 인자(num)만큼의 길이 만큼 복사해서 다시 한번 이야기 해보면 memcpy(dest, source, num) 함수는 source의 메모리에 있는 값들을 num 길이만큼 dest에 복사해서 붙여넣는 함수 입니다. 자, 마지막으로 기억하기 좋게 강조하면 memcpy(복사받을 메모리, 복사할 메모리, 길이) 입니다. **주의할점 1 **주의할점 2 2. memcpy 예제 int* 타입
예제를 보면 초기화 하지 않은 배열 dest에 src의 값이 잘 복사된것을 확인할 수 있습니다. char* 타입 복사1 : 일부만 복사
이렇게 C언어 스타일의 문자열 (char*)을 복사 해보았습니다. char* 타입 복사2 : 전체 복사 (주의)
결과를 보면 알 수 있듯이 C언어 스타일의 문자열(char*)을 전체 복사할때는 길이 + 1을 해주어야 합니다. 그렇기 때문에 dest1는 "BlockDMask"까지만 복사 되어서 dest1이 "BlockDMaskklmnop" 가 되었고 dest2는 "BlockDMask\0" 까지 복사 되었기 때문에 "BlockDMask\0klmnop"가 되어서 출력할때는 앞에서부터 쭉 출력하다가 문자열의 끝을 알리는 '\0'를 만났기 때문에 "BlockDMask" 여기까지만 출력하게 된 것 입니다. 추가적으로 dest1과 dest2를 제대로 적으면 프로그래머가 의도적으로 '\0'을 빼고 복사하려면 "sizeof(char) * 배열길이"만큼만 복사하면
되고 이상으로 C/C++의 메모리 복사 함수 memcpy에 대해서 알아보았습니다. '<개인공부> > [C언어, C++]' 카테고리의 다른 글
|