한국어

tc_backup

strcpy 는 문자열 복사를 위한 함수로서
길이를 지정안하는 대신 source 문자열이 반드시 '\0' 으로 끝나야합니다.
source 에서 '\0'을 만나면 복사를 종료합니다
('\0' 까지 복사됩니다)

이에 반하여 memcpy는 형에 관계없이 임의의 영역을 지정한 byte 수만큼 복사하는
기능을 수행합니다

char dstS[64], srcS[]="string copy";

여기서 srcS를 dstS로 복사하려면

strcpy 로는

strcpy(dstS, srcS);

이렇게만 하면 되지만

memcpy로 복사하려면

memcpy(dstS, srcS, strlen(srcS)+1);

'\0' 까지 처리하기위해 복사할 size를 strlen(srcS)+1 로 지정해 줘야합니다

둘다 메모리 복사란 점에서는 같은 역할을 하지만
문자값을 비교하여 종료하느냐, byte 수를 따져 종료하느냐의 차이가 있습니다
용도가 틀리다고 말할 수는 있어도 어떤것이 더 효율적이다라고는 말하기 어렵습니다
memcpy쓸곳에는 memcpy를 쓰고 strcpy를 쓸 곳에는 strcpy를 쓰면 되느거지요


-------------------------------------------------------------------


속도의 차이는 통상 컴파일러 종류와 운영체제에 따라서 가변사항이
있을것으로 생각됩니다.

요즘은 컴파일러가 좋아지고 님께서 구현하실때 이렇게 한다면
실질적인 의미가 없습니다.

strcpy( test_buff , test_buff_2 );

memcpy( test_buff , test_buff_2 , strlen(test_buff_2) );


그런데, 프로그램이라는 것은 언제나 실수를 할 수 있으며
속도와 안정성( 예외처리 )의 갈림길에 서게 됩니다.

가정을 하여 보시기 바랍니다.

1. test_buff_2 에 , 만약 널 문자 종료가 않생길수 있다면 ?
2. test_buff_2 보다 test_buff 가 작다면 ?

이렇게 된다는 가정이 발생한다면 않되겠지만 수많은 코드를 작성할때는
반드시 발생할 수 있으며, 이러한 문제들은 쉽게 디버깅 되지 않거나
예기치 않은 문제를 가져옵니다.

결과적으로 , 비용적으로 만약 strcpy 가 더 빠르다고 하더라도 ,
memcpy 을 추천합니다. 게다가 가정된 오류를 검사하는 루틴을 포함한다고
하더라도 , 그 효율성의 문제는 크게 발생하지 않습니다.

분류 :
Programming
태그 :
조회 수 :
9764
등록일 :
2008.08.20
16:27:12 (*.234.246.12)
엮인글 :
https://www.rain9.com/xe/tc_backup/2760/cad/trackback
게시글 주소 :
https://www.rain9.com/xe/tc_backup/2760
List of Articles
번호 제목 글쓴이 날짜 조회 수
140 ETC [시외버스] 부천, 안양 <-> 속초,양양 시간표 [1] file 엔신 2009-01-16 15875
139 Windows 윈도우즈 비스타 원격 데스크톱 다중 접속 [2] 엔신 2009-01-13 12132
138 Ambiguous 프로그램 제거 툴 - Revo Uninstaller [1] file 엔신 2009-01-10 10648
137 Ambiguous 일회성 이메일 yopmail.com file 엔신 2009-01-10 28740
136 CCNA GRE Tunneling file 엔신 2008-12-17 14177
135 Windows 비스타(Vista) 울티메이트(Ultimate) 서비스(Services) 설정 file 엔신 2008-12-13 10049
134 Security Nessus 설치, 사용법 file 엔신 2008-12-11 94297
133 Security Backtrack3 Final에서 sshd 가동하기 [2] 엔신 2008-12-08 11677
132 ETC 노트북 MAC Address(맥어드레스), 제품번호(SN) secret 엔신 2008-11-29  
131 Ambiguous 디스크 조각모음(Defragmenter) 벤치마크 기사 정리~ file 엔신 2008-10-14 12341
130 Ambiguous 구글(google) 애플리케이션(Apps)의 cname 안내 오류로 인한 혼란가중 [2] file 엔신 2008-09-29 15018
129 Security 어셈 레퍼런스(?) 엔신 2008-09-17 6882
» Programming strcpy()와 memcpy() 엔신 2008-08-20 9764
127 Programming 널 포인터(NULL Pointer) 엔신 2008-08-16 8671
126 Programming time.h 시간 2 엔신 2008-08-12 8340
125 Programming time.h 시간 엔신 2008-08-11 25804
124 Programming 문자열 처리 함수 < string.h > [2] 엔신 2008-07-26 9743
123 ETC 책책책 책을 읽읍시다 file 엔신 2008-07-02 7866
122 Ambiguous MBR 디스크와 GPT 디스크 엔신 2008-06-20 14516
121 Windows 환상의 psexec.exe 사용법 엔신 2008-06-19 22461