比方說,我有這樣的代碼在if語句中,如果我爲變量賦值,是否必須在else語句中再次執行?
if ((p = malloc(int)) == null) { do something }
else { do something else with p }
我知道語法可能是不正確的,但如果讓說,裏面的if語句的條件是不正確的,不等於空,我們移動到else語句,如果我試圖在else語句中使用p
,p
仍將被分配malloc(int)
?或者我必須在else語句中再次分配malloc(int)
到p
?
「意志p仍然被分配的malloc」 - 它沒有被分配malloc'的'結果*現在*不管。如果您*不想泄漏內存,語法只是不正確。你的任務應該包含在parens中。解決這個問題,'else'塊應該有一個非空'p',導致'if'測試失敗。 – WhozCraig
你可以用簡單的賦值來測試這個假設,而不是用一個可能指向有效內存的指針搞亂UB。不,你不必在'else'塊中重複賦值。 – Beta