의 내가if 문에서 변수에 값을 할당하면 else 문에서 다시해야합니까?
if ((p = malloc(int)) == null) { do something }
else { do something else with p }
내가 구문이 올바르지 않을 수 있습니다 알고이 코드를 가지고 있지만,이 할 수있는 경우 문은 사실이 아니다 null로 동일하지 우리가로 이동하는 경우, 내부 상태라고 가정 해 봅시다 else 문에서 p
과 작업을 시도하면 은 여전히 malloc(int)
으로 지정됩니까? 또는 else 문에서 malloc(int)
을 p
에 다시 할당해야합니까? 조건을 검사하기 전에 평가 먼저 할당
p = malloc(sizeof(int))
에서 다음 올바르게 괄호를 사용할 경우
"여전히 malloc이 할당됩니다"- malloc' * now * 결과에 할당되지 않습니다. * 메모리를 누출하지 않으려는 경우에만 구문이 잘못됩니다. 숙제는 괄호로 묶어야합니다. 'else' 블럭이'if' 테스트에서 실패를 야기하는 null이 아닌'p'를 가지도록 고쳐줍니다. – WhozCraig
유효한 메모리를 가리킬지도 모르는 포인터를 사용하여 UB를 위험에 빠뜨리지 않고 간단한 할당으로 가설을 테스트 할 수 있습니다. 그리고 'else'블록에서 할당을 반복하지 않아도됩니다. – Beta