我想请教一下下面的情况:我应该明确地施放malloc()的返回值吗?
char *temp;
temp = malloc(10);
由于malloc
返回类型是void*
,将由malloc
返回的指针隐式转换为char*
类型被分配到临时过吗?标准在这方面说了什么?
如果我们的指针变量例如一些结构类型:
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
如果我们没有它铸造于struct node*
型分配内存来临时,将其隐式转换为struct node*
型或者是有必要明确地投它到struct node*
类型?
如果您可能需要使用C++编译器而不是C编译器编译代码,那么需要强制转换。因此,我的大部分代码都包含了明确的转换 - 尽管纯C并不需要它。我通常用/ * = C++ = * /来标记它以指示原因。 – 2009-06-04 23:32:53
尽管没有必要,但对于我来说,稍后可以帮助我阅读代码,而且不需要冗长。 – Xolve 2010-08-07 06:26:42
请参阅[此问题](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)。 – unwind 2013-06-04 14:50:57