|
:
아래와 같은 코드에서요,
EXP_UNIT* Tunit = (EXP_UNIT*)malloc(sizeof(EXP_UNIT));
memset(Tunit,NULL,sizeof(EXP_UNIT));
Tunit->arc_num=0;
Tunit->head_ptr = hunit;
Tunit->islexical = -1;
if(Tunit->id == NULL)
{
Tunit->id = (int*)malloc(sizeof(int)); *********
memset(Tunit->id,NULL,sizeof(Tunit->id));
}
else
memset(Tunit->id,NULL,sizeof(Tunit->id));
*(Tunit->id) = id;
******* 부분에서 access violation이 나거든요.
Tunit->id 가 NULL이면 memory allocation이 안된건데,
malloc하는데 왜 이런 문제가 발생하는가요?
그리고, sizeof(EXP_UNIT) = 4000 이면,
첫번째 line에서 Tunit을 malloc하고 나면,
sizeof(Tunit) = 4000이 되어야 하는거 아닌가요?
근데 여전히 sizeof(Tunit) = 4로 나오는군요.
첫번째 line에서부터 malloc이 잘 안된거라면
왜 이런 일이 발생하는지 모르겠네요...
많은 도움 부탁드립니다.
|