我寫這樣的代碼:ptr = free(ptr),NULL安全嗎?
#include <stdlib.h>
int main(void)
{
void *kilobyte;
kilobyte = malloc(1024);
kilobyte = NULL, free(kilobyte);
return 0;
}
的對稱性,這是很好的。但我從來沒有見過任何人使用之前這個成語,所以,我不知道這實際上可能是不可移植/不安全的,儘管這Wikipedia報價:
In the C and C++ programming languages, the comma operator (represented by the token ,) is a binary operator that evaluates its first operand and discards the result, and then evaluates the second operand and returns this value (and type).
編輯:混合起來的順序。現在它編譯在gcc
沒有任何警告。
'free'沒有返回值,所以該行不良作風。代碼甚至沒有更少的輸入,使用標準的代碼。 – Olaf
AFAIK,逗號運算符丟棄'free'值,這是'void',並使用'NULL'代替。如果你的風格需求在釋放它們之後始終將指針指向NULL,那麼它**少輸入。 –
丟棄沒有價值!你有沒有試圖在問之前編譯這個?你有沒有在標準中找到合法或非法的證據?請引用該部分。 (哦,我用gcc嘗試過)。 – Olaf