gpt4 book ai didi

c++ - C++程序隐藏指针的良好定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:07 25 4
gpt4 key购买 nike

According to Wikipedia :

C++11 defines conditions under which pointer values are "safely derived" from other values. An implementation may specify that it operates under "strict pointer safety," in which case pointers that are not derived according to these rules can become invalid.

正如我所读,您可以获得实现所使用的安全模型,但是对于编译器来说这是固定的(可能通过命令行开关可变)。

假设我有隐藏指针的代码,这样的代码肯定不会在垃圾收集器上运行一个天真的 bolt 。然而,收集器(比如我自己的)和 Boehm 提供了用于在某些对象中查找指针的钩子(Hook)。

我特别想到 JudyArrays。这些是必须隐藏 key 的数字尝试。我的问题基本上是使用此类数据结构是否会导致 C++11 中未定义程序的行为。

我希望不会(因为 Judy Arrays 胜过其他一切)。碰巧的是……我正在使用它们来实现垃圾收集器。然而,我很担心,因为“最低要求”根本不起作用,并且在最初关于 C++ 一致性模型的辩论(英国和澳大利亚)中遭到强烈反对。参数要求更好。但是 C++11 GC 相关的文本似乎两者兼而有之,所以我很困惑!

最佳答案

实现定义了一个实现是提供宽松的指针安全(您似乎想要的)还是严格的指针安全(指针仅在安全派生时保持有效)。正如您所暗示的,您可以调用 get_pointer_safety 来找出政策是什么,但标准没有提供指定/更改政策的方法。

但是,您可以回避这个问题。如果您可以在隐藏指针之前调用 declare_reachable(传递该指针值),它将保持有效,直到匹配调用 undeclare_reachable(这里“匹配”的意思是调用嵌套)。

关于c++ - C++程序隐藏指针的良好定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14722780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com