이중포인터가 일차포인터를 가리키고 이중포인터를 통해서 일차포인터를 동적할당 해주는 과정에서 힙손상 오류가 납니다.

ehaakdl의 이미지

이중포인터가 일차포인터를 가리키고 이중포인터를 통해서 일차포인터를 동적할당 해주는 과정에서 힙손상 오류가 납니다. 웃긴게 5번 정도 할당되고 6번째는 메모리 재할당이 안됩니다.

[할당함수]

AllocTemp = AssignmentCheck(&nCol, &hFullBackup, &dwThId);

[내부 할당함수]

int AssignmentCheck(DWORD *nCol, HANDLE **hFullBackup, unsigned int **dwThId) //dwThId 살펴보기
{
static int check;
check++;
if (*nCol == 0)
{
*hFullBackup = (HANDLE*)malloc(sizeof(HANDLE) * 1);
if (!*hFullBackup)
{
dwErrInfo = GetLastError();
_tprintf(_T("Handle Mamory alloc Fail error:%d\n"), dwErrInfo);
return MEMFAIL;
}
*dwThId = (unsigned*)malloc(sizeof(unsigned) * 1);
if (!dwThId)
{
dwErrInfo = GetLastError();
_tprintf(_T("Thread Id Mamory alloc Fail error:%d\n"), dwErrInfo);
return MEMFAIL;
}
}
else
{
if(check >= 5) _tprintf(_T("start:%d\n"), check);
*hFullBackup = (HANDLE*)realloc(*hFullBackup, sizeof(HANDLE) * 1);
if (check >= 5) _tprintf(_T("end:%d\n"), check);
if (!*hFullBackup)
{
dwErrInfo = GetLastError();
_tprintf(_T("메모리 할당 실패 main"));
return MEMFAIL;
}
 
*dwThId = (unsigned int*)realloc(*dwThId, sizeof(unsigned int) * 1);
if (!*dwThId)
{
dwErrInfo = GetLastError();
_tprintf(_T("메모리 할당 실패 main"));
return MEMFAIL;
}
}
return 0;
}

qiiiiiiiip의 이미지