함수의 마지막 줄에서 예외가 발생합니다. 예외는 무료 함수와 관련이 있습니다. 여기 있습니다 : Windows가 HW1.exe에서 중단 점을 트리거했습니다.무료 예외 c
이것은 HW1.exe 또는로드 한 DLL에 버그가 있음을 나타내는 힙 손상으로 인한 것일 수 있습니다.
또한 HW1.exe에 포커스가있는 동안 사용자가 F12 키를 누르기 때문일 수 있습니다.
출력 창이 더 많은 진단 정보를 가지고있을 수 있습니다.
void unicode(HANDLE file, DWORD sizeOfFile, int N) {
if(sizeOfFile - 2 == 0)
return;
_TCHAR* text = (_TCHAR*)malloc(sizeOfFile);
DWORD numRead = 0;
BOOL read = ReadFile(file, text, sizeOfFile, &numRead, NULL);
assert(read && (sizeOfFile == numRead));
int i = 0;
int lineNum = 0;
int lineStart = 0;
text++;
sizeOfFile--;
while(i <= sizeOfFile/2) {
if(i == sizeOfFile/2 && lineNum < N)
printLineUnicode(text + lineStart, i - lineStart, lineNum++);
else if(text[i] == '\r') {
if(lineNum < N) {
printLineUnicode(text + lineStart, i - lineStart, lineNum++);
}
i ++;
lineStart = i + 1;
}
i ++;
}
i -= 2;
int lineEnd = i;
while(i >= 0) {
if(i == 0 && lineNum < N)
printLineUnicode(text, lineEnd - i + 1, lineNum++);
if(text[i] == '\n') {
if(lineNum < 2*N) {
printLineUnicode(text + i + 1, lineEnd - i, lineNum++);
lineEnd = i - 2;
i --;
}
}
i --;
}
free(text);
}