내 코드에 wcstombs_s
을 사용하여 CString
을 char*
으로 변환합니다. 코드는 다음과 같습니다.wcstombs_s이 (가) 제대로 작동하지 않습니다.
AddItemToListIncludeSubFolder(CString FolderPath, CString Parent)
{
char szInputPath[1024];
memset(szInputPath,1024,'\0');
size_t CharactersConverted=0;
wcstombs_s(&CharactersConverted, szInputPath, FolderPath.GetLength()+1,
FolderPath, _TRUNCATE);
}
일부 예외가 발생합니다. 메모리 예외. CString
이 너무 길어서 1024 문자가 아닐 때 wcstombs_s
이 작동하지 않거나 잘못되었습니다.
오류를 보여주는 완전한 소형 프로그램을 제시하십시오. 여러분의 코드가 바로 지금'wcstombs_s '에 대한 호출에서 사용되지 않는 변수에 두 개의'memset' 호출을 가지고 있습니다. 문제가 설명 될 때까지는 소음 일뿐입니다. –
BOOL CPDF2ImageDlg :: DeleteItemFromListIncludeSubFolder (CString FolderPath, CString 부모) { \t MSG msg; \t HANDLE hFile; \t WIN32_FIND_DATAA lpFile; \t char FilePath [MAX_PATH_LENTH]; \t char szInputPath [MAX_PATH_LENTH]; \t \t size_t CharactersConverted = 0; \t memset (FilePath, MAX_PATH_LENTH, '\ 0'); \t memset (szInputPath, MAX_PATH_LENTH, '\ 0'); \t wcstombs_s (& CharactersConverted, szInputPath, FolderPath.GetLength() + 1, FolderPath, _TRUNCATE); –
안녕하세요, 지금 확인할 수있는 코드를 수정했습니다. 메모리와 관련된 런타임 예외가 발생합니다. –