반응형

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 방식이 제일 안전함

반응형

+ Recent posts