如果存在,则应满足以下属性:
void *
NULL
[起初我以为我可以做类似(NULL + 1)
或(void *)1
的事情,但是这些似乎有问题。前者对NULL
使用指针算法,我认为这是未定义的行为。第二个依赖于以下事实:NULL
没有物理地址1。(即(void *)0 == (void *)1
完全可能)
如果存在,则应满足以下属性:类型为void *不需要实例化“虚拟对象”作为地址,保证不比较等于...
NonNull::dangling()
存在于Rust中,可以在给定NonNull
实际值之前对其进行临时初始化。您不能将null
用作临时对象,因为它是NonNull
,并且会呈现未定义的行为。