根据维基百科
C++11定义了指针值从其他值“安全派生”的条件。实现可以指定它在“严格指针安全”下操作,在这种情况下,没有根据这些规则派生的指针可能变得无效。
当我读到它时,您可以得到实现使用的安全模型,但是编译器的安全模型是固定的(可能是带有命令行开关的变量)。
假设我有隐藏指针的代码,这些代码肯定不会在垃圾收集器上使用简单的螺栓运行。然而,收集器(像我自己的一样)和Boehm提供了在某些对象中查找指针的钩子。
我特别想到的是JudyArrays。这些都是数字尝试,它们必然隐藏密钥。我的问题基本上是,使用这样的数据结构是否会使程序的行为在C++11中不被定义。
我不希望(因为Judy数组的性能优于其他一切)。而且碰巧..。我用它们来实现垃圾收集器。然而,我很担心,因为“最低要求”根本不具有一般性工作,并且在关于C++一致性模型的最初辩论中(由英国和澳大利亚)强烈反对。参数要求较好。但是与C++11 GC相关的文本似乎两者都有一点,所以我很困惑!
发布于 2013-02-06 07:56:15
它的实现定义了实现是提供轻松的指针安全(您似乎想要的)还是严格的指针安全(指针只有在safely derived时才有效)。正如您所暗示的,您可以调用get_pointer_safety来了解策略是什么,但是标准没有提供指定/更改策略的方法。
然而,你可以回避这个问题.如果您可以在隐藏指针之前调用declare_reachable (传递该指针值),则在对undeclare_reachable的匹配调用(这里的“匹配”表示调用nest)之前,它仍然有效。
https://stackoverflow.com/questions/14722780
复制相似问题