오케이 그럼 memcpy로 strcat 함수의 구현을 보았습니다. 나는 할당 할 필요가 없으므로 효율적이라는 것을 알고 있습니다. 그러나 소스 문자열의 내용을 결과 문자열로 덮어 쓰는 방법은 어떻게 유지합니까? 예를 들어strcat와 memcpy의 혼동
는 테이크를 할 수 있습니다 :
char *str1 = "Hello";
char *str2 = "World";
str1 = strcat(str1, str2);
어떻게 str2
에서 그이 결과이 "Helloworld"문자열의 내용으로 덮어 쓰기되지 않도록합니까?
문자열이 문자 배열에 불과하고 배열의 크기가 고정되어 있고 배열을 다시 할당하지 않으면 배열보다 큰 배열에 바이트를 복사하면 안전하지 않습니까?
겹침 때문에 UB를 호출했을 경우 * strcat가 작동하는 방식을 이해한다고 가정 할 때 * 실제로 생각한 것 *이 될 가능성이 더 큽니다. 메모리 할당). – WhozCraig
포인터가 무엇인지 아십니까?String Literar가 무엇인지 알고 있습니까? – Michi
[코드 검토] (http://codereview.stackexchange.com/questions/149812/strcat-implementation)에서'strcat()'구현에 관한 질문이있었습니다. OP는'malloc()'을 사용했기 때문에 표준 라이브러리 접근법에 대한 논의가있었습니다. –