할당할 때
ucGRAY=(unsigned char**)malloc(sizeof(unsigned char*)*width);
for(i=0;i<width;i++)
{
ucGRAY[i]=(unsigned char*)malloc(sizeof(unsigned char)*height);
}
2차원 배열가지고 쭉 막 돌다가
해제할 때
for(i=0;i<width;i++)
{
free(ucGRAY[i]);
}
free(ucGRAY);
free 빼먹으면 코드 잘 도는데 free 넣으니까
할당하고 코드실행 중간에 에러 안나다가 해제할때 corruction나는데 왜일까요
다지우고 저거만 돌려보세요 에러 나는지
여기 적힌 코드만 보면 이상 없어 보이거든? 가능한 경우의 수 중에 떠오르는건 2가지야. 첫째, width 나 height 변수가 동작 중에 바뀌어서 malloc 하지 않은 포인터를 free 하려고 시도한다. 둘째, 이미 다른 루틴에서 free한 포인터를 다시 free하려고 시도한다. 체크해봐.
나도예전에 비슷한경험있었는데 다지우고 할당이랑 해제코드만남겨놨더니 멀쩡히돌아감 알고보니 오타.