Is typecast required in malloc?
This question already has an answer here:
I assume you mean something like this:
int *iptr = (int*)malloc(/* something */);
And in C, you do not have to (and should not) cast the return pointer from malloc
. It's a void *
and in C, it is implicitly converted to another pointer type.
int *iptr = malloc(/* something */);
Is the preferred form.
This does not apply to C++, which does not share the same void *
implicit cast behavior.
You should never cast the return value of malloc()
, in C. Doing so is:
void *
is compatible with any other pointer type (except function pointers, but that doesn't apply here). So: there are no benefits, at least three drawbacks, and thus it should be avoided.
You're not required to cast the return value of malloc
. This is discussed further in the C FAQ: http://c-faq.com/malloc/cast.html and http://c-faq.com/malloc/mallocnocast.html .
上一篇: 类型malloc C ++
下一篇: malloc需要typecast吗?