이중포인터가 일차포인터를 가리키고 이중포인터를 통해서 일차포인터를 동적할당 해주는 과정에서 힙손상 오류가 납니다.
글쓴이: ehaakdl / 작성시간: 토, 2016/05/14 - 12:43오전
이중포인터가 일차포인터를 가리키고 이중포인터를 통해서 일차포인터를 동적할당 해주는 과정에서 힙손상 오류가 납니다. 웃긴게 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;
}Forums:


MWE 를
MWE 를 보여주세요
https://en.wikipedia.org/wiki/Minimal_Working_Example
댓글 달기