lstrcpyA 함수(winbase.h)
버퍼에 문자열을 복사합니다.
구문
LPSTR lstrcpyA(
[out] LPSTR lpString1,
[in] LPCSTR lpString2
);
매개 변수
[out] lpString1
형식: LPTSTR
lpString2 매개 변수가 가리키는 문자열의 내용을 수신하는 버퍼입니다. 버퍼는 종료 null 문자를 포함하여 문자열을 포함할 수 있을 만큼 커야 합니다.
[in] lpString2
형식: LPTSTR
복사할 null로 끝나는 문자열입니다.
반환 값
형식: LPTSTR
함수가 성공하면 반환 값은 버퍼에 대한 포인터입니다.
함수가 실패하면 반환 값은 NULL 이고 lpString1 은 null로 종료되지 않을 수 있습니다.
설명
시스템의 DBCS(더블 바이트 문자 집합) 버전을 사용하면 이 함수를 사용하여 DBCS 문자열을 복사할 수 있습니다.
lstrcpy 함수는 원본 버퍼와 대상 버퍼가 겹치는 경우 정의되지 않은 동작을 가합니다.
보안 설명
이 함수를 잘못 사용하면 애플리케이션의 보안이 손상됩니다. 이 함수는 SEH(구조적 예외 처리)를 사용하여 액세스 위반 및 기타 오류를 catch합니다. 이 함수는 SEH 오류를 catch할 때 문자열을 null로 종료하지 않고 호출자에게 오류를 알리지 않고 NULL 을 반환합니다. 호출자는 공간 부족이 오류 조건이라고 가정해도 안전하지 않습니다.lpString1 은 lpString2 를 보유할 수 있을 만큼 커야 하며 닫는 '\0'이면 버퍼 오버런이 발생할 수 있습니다.
버퍼 오버플로 상황은 애플리케이션에서 많은 보안 문제의 원인이며 액세스 위반이 발생할 경우 애플리케이션에 대한 서비스 거부 공격을 일으킬 수 있습니다. 최악의 경우 버퍼 오버런을 통해 공격자가 실행 코드를 프로세스에 삽입할 수 있습니다( 특히 lpString1 이 스택 기반 버퍼인 경우).
대신 StringCchCopy 를 사용하는 것이 좋습니다. StringCchCopy(buffer, sizeof(buffer)/sizeof(buffer[0]), src);
는 포인터가 아니어야 한다는 것을 buffer
알고 있거나 를 사용 StringCchCopy(buffer, ARRAYSIZE(buffer), src);
하며, 포인터로 복사할 때 호출자가 뾰족한 메모리의 크기를 문자로 전달하는 것을 담당한다는 점에 유의해야 합니다.
참고
winbase.h 헤더는 lstrcpy를 별칭으로 정의하여 UNICODE 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | winbase.h(Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |
추가 정보
개념
참조