比方说,我有这样的代码在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