유니코드 애플리케이션에서 표준 char 문자열을 통합하려면 char을 wchar_t. 그러나 이 변환을 구현하려고 시도하면 정의되지 않은 동작이 발생하는 경우가 많습니다.
다음 함수를 고려하세요.const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t wc[cSize]; mbstowcs (wc, c, cSize); return wc; }이 함수는 wchar_t 배열을 할당하고 char
을 wchar_t, wc에 대한 포인터를 반환합니다. 그러나 wc는 함수 끝에서 할당이 해제되는 지역 변수이므로 반환된 포인터를 역참조할 때 정의되지 않은 동작이 발생합니다.문제 해결
const wchar_t *GetWC(const char *c) { const size_t cSize = strlen(c)+1; wchar_t* wc = new wchar_t[cSize]; mbstowcs (wc, c, cSize); return wc; }
호출자의 책임
위 내용은 유니코드 응용 프로그램에서 char를 wchar_t로 안전하게 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!