使用未初始化的变量UB的地址?
发布时间:2020-12-16 10:37:06 所属栏目:百科 来源:网络整理
导读:参见英文答案 Is it undefined behavior to take the address of an uninitialized pointer?????????????????????????????????????5个 这个小代码是UB吗? void Test(){ int bar; printf("%p",bar); } IMO不是UB,但我想要其他一些意见. 它只是打印条形图的地
参见英文答案 >
Is it undefined behavior to take the address of an uninitialized pointer?????????????????????????????????????5个
这个小代码是UB吗? void Test() { int bar; printf("%p",&bar); } IMO不是UB,但我想要其他一些意见. 它只是打印条形图的地址,即使条形图从未被初始化. 解决方法
TL:DR不,你的代码不会像你想象的那样使用任何未初始化的东西来调用UB.
(ny)变量的地址(在这种情况下是自动的)具有定义的值,因此无论变量本身是否被初始化,变量的地址都是定义的值.您可以使用该值. (如果你没有处理指针并进行双重引用.:)) 那说严格来说,你应该写 printf("%p",(void *)&bar); 因为%p期望类型指针的参数为void而printf()是一个可变参数函数,所以不执行促销(转换).否则,这是一个明确定义的行为. C11,章节§7.21.6.1
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |