나는 다음과 같은 코드를 쓰고 있어요 : 좋은 대칭에 대한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'는 값을 반환하지 않으므로 선이 좋지 않습니다. 코드는 표준 ideom을 사용하여 입력하는 것이 더 적지 않습니다. – Olaf
AFAIK, 쉼표 연산자는 '공짜'값인'free' 값을 버리고'NULL'을 대신 사용합니다. 그리고 ** 당신의 스타일이 그것들을 해방 한 후에도 NULL에 포인터를 일관되게 할당 할 것을 요구한다면 ** 덜 ** 입력하는 것입니다. –
삭제할 가치가 없습니다! 묻기 전에 이것을 컴파일하려고 했습니까? 이것이 합법적이거나 불법이라는 증거를 찾았습니까? 섹션을 인용하십시오. (오, 나는 gcc로 시도했다.) – Olaf