멀티미디어 지식공작소 | 'strcpy' 태그의 글 목록
멀티미디어 지식공작소 위치로그  |  태그  |  미디어로그  |  방명록
icon strcpy 에 해당하는 글1 개
2007.04.08   [펌] strcpy()와 memcpy()


icon [펌] strcpy()와 memcpy()
프로그램 기술/C/C++/MFC | 2007. 4. 8. 01:03
출처 블로그 > 마른하늘에 눈이내리네~
원본 http://blog.naver.com/kihoyaa/10000790352

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 을 추천합니다. 게다가 가정된 오류를 검사하는 루틴을 포함한다고
하더라도 , 그 효율성의 문제는 크게 발생하지 않습니다.

RTOS 에서 운영되는 프로그램 또한 마찬가지 입니다.


arrow 트랙백 | 댓글



[PREV] [1] [NEXT]
관리자  |   글쓰기
BLOG main image
- 블로그를 처음 만들면서
분류 전체보기 (142)
기술동향 뉴스 (51)
신조어 사전 (1)
기술용어집 (5)
영상처리 기술 (29)
IT 사용정보 (7)
프로그램 기술 (23)
학술정보 (1)
생활정보 (9)
낙서장 (13)
나의 이야기 (0)
About Me (0)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
multimedia's Blog is powered by Daum / Designed by plyfly.net