[완료]포인터 관련 질문입니다.

parrier의 이미지

BOOL RLCcreate(U32 argc, U32 *argv)

와 같이 함수를 선언하였습니다.

그리고,

FrameType *entity=NULL; 로 선언을 해 둔 상태에서

RLCcreate(1, (U32*)&entity);를 수행하였습니다.

함수 내부적으로는

argv[0] = (RLCType *)malloc(sizeof(RLCType));

와 같이 선언하여, 함수 내에서 malloc을 통한 메모리 할당을 해주기로 하였습니다.

헌데 실행을 시키면,

C4047: unsigned int의 간접 참조 수준이 'RLCType *'과(와) 다릅니다.

라고 나오네요. 한다리 걸쳐서 메모리를 할당하겠다는 의미일 뿐인데 왜 이런 warning이 뜨는 것일까요?

한참을 노력해봤는데 안되네요. 이 퀴즈를 좀 도와주세요.

------------------------------------------------
FrameType *entity=NULL;

BOOL RLCcreate(U32 argc, U32 *argv){
argv[0] = (RLCType *)malloc(sizeof(RLCType));
return TRUE;
}

void main(void){
RLCcreate(1, (U32*)&entity);
}
------------------------------------------------

suapapa의 이미지

BOOL RLCcreate(U32 argc, U32 **argv)
{
*argv = (RLCType *)malloc(sizeof(RLCType));
...
}

이렇게 하시면 되지 싶은데요.

parrier의 이미지

답변 감사드립니다. 먼 옛날에 들어보았던 이중포인터...

그것이 이런 곳에서 쓰이는 것이었군요. 지금까지 알고만 있었지 쓴 일이 없어서

몰랐습니다.

감사합니다.

-_-v