strcpy 함수에는 보안 위험이 있으며 대상 문자열의 메모리를 덮어쓸 수 있습니다. 개선 사항은 다음과 같습니다: strncpy 함수를 사용하여 복사할 수 있는 최대 문자 수를 지정합니다. strlcpy 함수를 사용하면 대상 문자열 길이를 자동으로 확인할 수 있습니다. C++에서는 std::string 클래스를 사용하여 문자열을 처리할 수 있으며, 이는 보다 안전한 작동 방법을 제공합니다.
strcpy 함수의 안전성
strcpy 함수는 문자열을 복사하는 데 사용되는 C 함수입니다. 대상 문자열의 버퍼 크기가 소스 문자열을 저장할 만큼 크지 않은 경우 함수가 대상 문자열 뒤의 메모리를 덮어쓰기 때문에 안전상의 위험이 있습니다.
strcpy 개선 방법
strcpy 함수의 불안전한 문제를 해결하려면 다음 방법을 사용하여 개선할 수 있습니다.
strncpy 함수는 strcpy 함수와 유사합니다. , 그러나 복사할 수 있습니다. 소스 문자열은 복사할 수 있는 최대 문자 수를 지정합니다. 이렇게 하면 대상 문자열 버퍼를 덮어쓰는 것을 방지할 수 있습니다.
예:
<code class="cpp">char destination[10]; strncpy(destination, "Hello World", 10);</code>
위 코드는 크기가 10이므로 "Hello Wor"만 대상 배열에 복사합니다.
strlcpy 함수는 대상 문자열 버퍼의 길이를 자동으로 확인하고 들어갈 수 있는 문자 수만 복사하는 strcpy 함수의 안전한 버전입니다.
예:
<code class="cpp">char destination[10]; strlcpy(destination, "Hello World", 10);</code>
strlcpy 함수는 크기가 10이므로 "Hello Wo"만 대상 배열에 복사합니다.
C++에서는 std::string 클래스를 사용하여 문자열을 처리하는 것을 고려할 수 있습니다. 문자열을 조작하는 보다 안전한 방법을 제공하고 메모리 할당을 자동으로 관리합니다.
예:
<code class="cpp">std::string destination = "Hello "; destination += "World";</code>
위 내용은 안전하지 않은 경우 C++에서 strcpy를 변경하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!