pStr = new WCHAR
(strSize
);
이렇게 하면 WCHAR 변수 하나만 생성되고 그 값이 strSize 값으로 초기화 될 뿐입니다.
pStr = new WCHAR
[strSize
];
이렇게 해야 원하는 WCHAR 배열 메모리를 얻을 수 있습니다.
김동석 님이 쓰신 글 :
: 정말 생각지도 못한곳에 틀린곳이 있었네요 ㅠㅠ
:
: 여기저기 다 뜯어고쳐보고..별짓을 다했었는데 ㅠㅠ
:
: 감사합니다!!!
:
: 송신영 님이 쓰신 글 :
: : 아래 두 코드의 차이점을 생각해 보세요..
: :
: :
: : pStr = new WCHAR(strSize); // 아니죠..
: : pStr = new WCHAR[strSize]; // 맞죠...
: :
: :
: : 김동석 님이 쓰신 글 :
: : : \\이건 오타였습니다...
: : :
: : : 브레이크를 걸어도 확인이 되지않습니다.
: : :
: : : 버튼을 눌렀을 때, 파일을 만드는 일을 합니다.
: : :
: : : 그리고 함수를 빠져나가서 시스템에서 죽습니다.
: : :
: : : 한두번 눌러선 안그러고 여러번 버튼을 누르다 보면 죽습니다.
: : :
: : : 에러창이뜨고 멈추는 지점은
: : :
: : : GETMEN.INC
: : :
: : : @LockBlockTypeLoop:
: : : mov eax, $100
: : : {Attempt to grab the block type}
: : : lock cmpxchg TSmallBlockType([ebx]).BlockTypeLocked, ah <--이 부분이였습니다.
: : : je @GotLockOnSmallBlockType
: : : {The pause instruction improves spinlock performance}
: : : pause
: : : {"Busy waiting" or "sleep and retry" strategy?}
: : : cmp NeverSleepOnMMThreadCon
: : :
: : : delete 도 delete[]로 수정하였습니다.
: : :
: : :
: : :
: : :
: : :
: : : 송신영 님이 쓰신 글 :
: : : : AnsiString strFilePath = "C:\Test";
: : : : 이 부분이 수정이 되었나요?
: : : :
: : : : AnsiString strFilePath = "C:\\Test";
: : : : 이렇게 해야 파일 경로가 정상적으로 설정됩니다.
: : : :
: : : : 브레이크를 걸어서 정확하게 Error가 발생하는 시점을 확인해보세요...
: : : :
: : : : 김동석 님이 쓰신 글 :
: : : : : fp = _wfopen(pStr, L"wb, ccs=UNICODE");
: : : : : 이렇게해도 fp는 Null값이 아니고 갑이 들어오고 파일도 생성이 됩니다..
: : : : :
: : : : : fp = _wfopen(pStr, L"wb");
: : : : : 이렇게 해야 정상적인건가요?
: : : : :
: : : : : delete[]로 변경하였습니다..
: : : : :
: : : : : 그래도 스레드 에러가 나네요..
: : : : :
: : : : : 메세지 박스
: : : : : Access violation at address 0044C5A9 in module 'test.exe'. Read of Address C885CD54.
: : : : :
: : : : : Thread Exit: Thread ID: 2980. Process LabelBlockPrint.exe (3644)
: : : : :
: : : : : 송신영 님이 쓰신 글 :
: : : : : : Error가 안나는 경우가 이상한것 같군요...
: : : : : :
: : : : : : fp = _wfopen(pStr, L"wb, ccs=UNICODE");
: : : : : :
: : : : : : 에서 fp가 NULL일 겁니다.
: : : : : : 왜일까요???
: : : : : :
: : : : : : delete 도 delete[]를 해야하지 않을까.... 하는 염려가..
: : : : : :
: : : : : :
: : : : : : 김동석 님이 쓰신 글 :
: : : : : : : 제가 지금 유니코드형식으로 txt파일을 만드려고 하는데요.
: : : : : : :
: : : : : : : 만드는덴 성공했는데 메모리 에러가 나는거 같아 문의드립니다.
: : : : : : :
: : : : : : : setlocale(LC_ALL, "korea");
: : : : : : : FILE *fp;
: : : : : : : char Path[256];
: : : : : : : wchar_t* pStr;
: : : : : : : AnsiString strFilePath = "C:\Test";
: : : : : : : AnsiString strFileName = "test.txt";
: : : : : : : AnsiString strTest = "가나다abc123";
: : : : : : :
: : : : : : : sprintf(Path, "%s\\%s", strFilePath, strFileName);
: : : : : : : int strSize = MultiByteToWideChar(CP_ACP, 0, Path, -1 , NULL, NULL);
: : : : : : : pStr = new WCHAR(strSize);
: : : : : : : MultiByteToWideChar(CP_ACP,0,Path,strlen(Path)+1,pStr,strSize);
: : : : : : :
: : : : : : : fp = _wfopen(pStr, L"wb, ccs=UNICODE");
: : : : : : :
: : : : : : : fwprintf(fp,L"%S\n", strTest);
: : : : : : :
: : : : : : : fclose(fp);
: : : : : : :
: : : : : : : delete pStr; // <-----에러가 나서 이걸 추가했습니다. 허나 이것도 에러가 나는거 같습니다.
: : : : : : :
: : : : : : : 에러가 누를때 마다 나는것도 아니고 불규칙적으로 발생합니다..
: : : : : : :
: : : : : : : 제가 빠뜨린 부분이 있나요?