我想請教一下下面的情況:我應該明確地施放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