반응형
EX02 HEAP CORRUPTION DETECTED
동적 할당을 하는 프로그램을 만들던 도중, free() 함수를 실행할때 에러 발생
원인:
Google에 찾아보니, 할당한 영역을 벗어나서 접근하게 될경우 발생하는 에러 라고 함
/*Decoding */
FileStreamInit(&fileStream, fileName, "r"); //파일크기에 따른 g_CodeSize 초기화
if (g_CodeSize == 0)
{
printf("\nError, No data in codefile, zero codeSize\n");
exit(1);
}
g_Buffer = (char*)calloc(g_CodeSize, sizeof(char));
fread_s(g_Buffer, g_CodeSize, sizeof(char), g_CodeSize, fileStream);
decode(g_Buffer, g_CodeSize);
아래 decode 함수에서 str[i] != '\0' 이 원인 이었음
i 가 size 만큼만 i++ 해야 되는데, 범위를 넘어서 버린듯
해결:
void decode(char* str,size_t size)
{
size_t i = 0;
while( i < size )
{
str[i] -= 3;
i++;
}
}
결론: 파일 안에서 글자 수에 따른 범위를 정할때는 index < size 방식이 제일 안전함
반응형
'C++ > Error, Exception, 주의' 카테고리의 다른 글
C언어, Queue, pop() 구현하던 도중 shallow copy와 비슷한 문제 발생 (0) | 2020.03.18 |
---|---|
member initializer list 사용시 주의 (0) | 2020.03.17 |
주의_1 while 문 안에 switch를 사용할 때 (0) | 2020.03.07 |
EX01_읽기 엑세스 위반 (0) | 2020.03.07 |