Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- cu 편의점
- 교촌치킨 신메뉴
- CU편의점
- 분당맛집
- 마켓컬리 추천
- 용인맛집
- 황리단길맛집
- CU편의점 추천
- 서현역중식
- 서현 맛집
- 수원 맛집
- 편의점 추천
- CU 편의점 추천
- 냉동만두 추천
- 순천맛집
- 동성로맛집
- 수지 술집
- 편의점 신제품
- 편스토랑
- BBQ 신메뉴
- 경주맛집
- 분당 맛집
- 황리단길디저트
- 대구동성로맛집
- 오뚜기 라면
- 서현역맛집
- 치킨 신메뉴
- 푸라닭
- 황리단길기념품
- 순천디저트
Archives
- Today
- Total
일상 메모장
memcpy 사용법 및 구현 - C 메모리 복사 본문
사용법
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);
정의
memcpy() 함수는 src 메모리 영역에서 dest 메모리 영역으로 n byte 만큼 복사합니다.
메모리 영역은 겹치면 안됩니다. 만약 src 와 dest 메모리 영역이 겹친다면 memmove 함수를 사용하세요.
반환 값
dest 의 포인터를 반환합니다.
memcpy() 구현 (memcpy 실제 구현부)
/**
* memcpy - Copy one area of memory to another
* @dest: Where to copy to
* @src: Where to copy from
* @count: The size of the area.
*
* You should not use this function to access IO space, use memcpy_toio()
* or memcpy_fromio() instead.
*/
void *memcpy(void *dest, const void *src, size_t count)
{
char *tmp = dest;
const char *s = src;
/* count 만큼 src 의 포인터를 이동하면 한바이트씩 dest로 복사합니다. */
while (count--)
*tmp++ = *s++;
return dest;
}
src 문자 한자씩 dest 에 count 만큼 복사합니다. strcpy() 함수와 차이점은 문자열은 문자열의 끝을 Null byte로 구분하지만, 메모리는 Null byte 도 데이터이기 때문에 count를 명시적으로 지정해야만 합니다.
예제
#include <string.h>
#include <stdio.h>
int main(void)
{
char src[32] = "Source memory";
char dest[32] = "Destination memory";
printf("Destination is \"%s\"\n", dest);
/* src 메모리를 sizeof(src) 만큼 (32byte) dest 로 복사합니다. */
memcpy( dest, src, sizeof(src));
printf( "After memcpy, Destination is \"%s\"\n", dest);
return 0;
}
결과값은
Destination is "Destination memory"
After memcpy, Destination is "Source memory"
입니다.
'C 언어' 카테고리의 다른 글
pthread_create 사용법 및 예제 (2) | 2020.02.06 |
---|---|
strcpy 사용법 및 구현 - C 문자열 복사 (4) | 2020.02.03 |
memmove 사용법 및 구현 - C 메모리 이동 (11) | 2020.01.29 |
strchr 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.21 |
strcat 사용법 및 구현 - C 문자열 처리 (0) | 2020.01.19 |