尽我所能,我见过的最接近的答案就是这个,有两个完全相反的答案(!)
问题很简单,这是合法的吗?
auto p = reinterpret_cast<int*>(0xbadface);
*p;  // legal?
我对此事的看法
*p是一个废弃的值表达式所以我得出结论,没有明确说明这是未定义的行为.然而,我清楚地记得一些平台陷入间接无效指针.我的推理出了什么问题?
到目前为止,我无法找到如何推断以下内容:
int* ptr;
*ptr = 0;
是未定义的行为.
首先,有5.3.1/1表示这*意味着转换T*为的间接T.但这对UB没有任何说明.
然后经常引用3.7.3.2/4说在非空指针上使用解除分配函数会使指针无效,之后无效指针的使用是UB.但是在上面的代码中没有关于释放的内容.
如何在上面的代码中推导出UB?