명시 적으로 malloc()의 반환 값을 캐스팅해야합니까?
다음 경우에 대해 물어보고 싶었습니다 :malloc
char *temp;
temp = malloc(10);
malloc
의 반환 유형이 void*
이므로 malloc
에 의해 반환 된 포인터는 임시로 할당되기 전에 char*
유형으로 암시 적으로 캐스트됩니까? 이와 관련하여 표준이 무엇이라고 말합니까?
포인터 변수가 다음과 같은 구조체 유형 인 경우 :
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
struct node*
유형으로 캐스팅하지 않고 temp에 메모리를 할당하면 struct node*
유형으로 암시 적으로 캐스팅되거나 명시 적으로 캐스팅해야합니다 그것 struct node*
유형?
C 컴파일러 대신 C++ 컴파일러로 코드를 컴파일해야하는 경우 캐스팅이 필요합니다. 결과적으로, 순수한 C는 그것을 필요로하지 않지만, 대부분의 코드에는 명시 적 캐스트가 포함됩니다. 나는 대개/* = C++ = * /로 그 이유를 나타내는 태그를 붙입니다. –
비록 필요하지는 않지만 나에게 약간의 자세한 정보가 담긴 코드를 나중에 읽도록 도와줍니다. – Xolve
[이 질문] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)도 참조하십시오. – unwind