오늘은 페이지에 도달 167 의 언어 (2 판 브라이언 W. 커니 핸 & 데니스 M. 리치를) 프로그래밍은 C를 하고 저자가 I 캐스팅해야한다고 발견 malloc
. 이 책의 일부는 다음과 같습니다.
7.8.5 스토리지 관리
malloc 및 calloc 함수는 동적으로 메모리 블록을 얻습니다.
void *malloc(size_t n)
초기화되지 않은 스토리지의 n 바이트에 대한 포인터를 리턴하거나 요청을 충족시킬 수없는 경우 NULL을 리턴합니다.
void *calloc(size_t n, size_t size)
지정된 크기의 n 개 객체 배열에 대해 충분한 여유 공간에 대한 포인터를 반환하거나 요청을 충족 할 수없는 경우 NULL을 반환합니다. 스토리지는 0으로 초기화됩니다. malloc 또는 calloc에 의해 리턴 된 포인터는 해당 오브젝트에 대한 올바른 정렬을 갖지만 다음과 같이 적절한 유형으로 캐스트되어야합니다.
int *ip; ip = (int *) calloc(n, sizeof(int));
나는 이미 malloc
(그리고 그 가족) 유형이 void *를 반환 한다는 것을 알고 있으며 , 왜 캐스팅하지 않는지에 대한 좋은 설명이 있습니다malloc
.
그러나 내 질문은 : 왜 책은 내가 그것을 캐스팅해야한다고 말합니까?
malloc
때문에 사용 하지 마십시오. 필요한 경우를 제외하고는 제외해야합니다. 그러나 제외해야합니다 ... AGGGHHHHHH !!!!! :-)