C++11 定义了指针值从其他值“安全派生”的条件。一个实现可以指定它在“严格的指针安全”下运行,在这种情况下,不是根据这些规则派生的指针可能会变得无效。
当我阅读它时,您可以获得实现使用的安全模型,但是对于编译器来说这是固定的(可能是带有命令行开关的变量)。
假设我有隐藏指针的代码,这样的代码肯定不会在垃圾收集器上使用天真的螺栓运行。然而收集器(就像我自己的)和 Boehm 提供了在某些对象中查找指针的钩子。
我特别在想 JudyArrays。这些是必然隐藏密钥的数字尝试。我的问题基本上是使用这样的数据结构是否会导致 C++11 中未定义程序的行为。
我希望不会(因为 Judy Arrays 的表现优于其他一切)。碰巧也是……我正在使用它们来实现垃圾收集器。然而,我很担心,因为“最低要求”根本不起作用,并且在最初关于 C++ 一致性模型的辩论(英国和澳大利亚)中遭到强烈反对。参数要求更好。但是 C++11 GC 相关的文本似乎有点两者兼而有之,所以我很困惑!