큰 임시 버퍼를 사용하지 않고 * src 및 * dst에 대해 음수 또는 양수 증분을 사용하여 가능한 겹쳐서 메모리를 이동하려고합니다. (memmove() 함수를 효율적으로 대체 할 수 있습니까?
smart_memmove(char *dst, const char *src, size_t num, int dst_inc, int src_inc);
DST와 겹칠 수 SRC 및 dst_inc 및 src_inc는 양 또는 음의 정수가 될 수 있습니다
나는의 라인을 따라 효율적으로 memmove()
기능에 대한 대체 뭔가을 마련하기 위해 노력하고 있어요 음의 증분은 시작 포인터가 위로 가면서 메모리에서 뒤로 이동 함을 나타냅니다. 나는 그것이 실행 속도의 감소를 의미한다고하더라도 큰 임시 버퍼를 사용하는 것을 피하고 싶다.
이러한 예 1에서 메모리 위치를 거꾸로 카운트 (17), 10 바이트마다 다른 바이트에서 증가 된 메모리 위치 0부터 복사 될 것이다 :
smart_memmove(17, 0, 10, -1, 2);
다른 예는 역방향 가령하는 것 메모리 위치의 바이트의 10 시리즈 6, 9, 12, 15, 18, 21, 24, 27, 30, 33 다음 매개 변수 smart_memmove 호출 기준 :
참고 또한 memcpy가 선호 할smart_memmove(6, 33, 10, 3, -3); /* or... smart_memmove(33, 6, 10, -3, 3); */
'src_inc'와'dst_inc'의 의미는 무엇입니까? –
dst + = dst_inc; – user613994
그건 잘못된 C 코드입니다. 그리고 나는 아직도'dst_inc'가 무엇을 의미하는지 모른다. –