Programing_Language/C++
[MFC] 문자열 변환 매크로 및 사용 주의사항
neohtux
2019. 4. 6. 19:05
728x90
CString 을 char*나
char*를 CString으로 변환시 W2A A2W 혹은
_T(" ") 매크로를 사용하여 변환하는경우 스택오버플로우가 발생하는 문제점을 직면했다.
반복문내에서 여러번 변환과정할때 내부 스택을 사용하기 때문에, 반복적으로 사용하면 스택오버플로우가 발생함.
ATL7.0부터 도입된 CW2A와 CA2W는 위의 문제를 피할 수 있다.
단, 내부 버퍼의 일정 크기를 넘어서면 힙에 메모리를 할당하게 된다. 따라서, 스택 오버플로우로 인한 프로그램이 죽는현상을 방지할 수 있다.
ex) char* -> CString 으로 변환
ex) CString -> char*로 변환
ex 0611_추가) UTF_8 문자열 집합 인코딩 변환 하는법
참조 : https://docs.microsoft.com/en-us/previous-versions/87zae4a3(v=vs.140)
300x250