gpt4 book ai didi

c - 从指针中窃取位

转载 作者:太空狗 更新时间:2023-10-29 17:05:43 25 4
gpt4 key购买 nike

在 The Art of Multiprocessor Programming, p215 中,作者说在 C 中,您可以从指针中“窃取”一点,并使用位运算符从单个字中提取一些标志(标记)和指针.我不知道这是如何完成的,所以举个例子对我有帮助。

最佳答案

  1. 确保指针对象在内存中对齐,以便所有指针都是偶数。最后一位可以自由存储单个 bool 标志。 (这不能完全移植。所以你需要了解平台。)

  2. 将指针作为 uintptr_t 类型的整数四处移动。这些很容易被操纵:

    bool get_flag(uintptr_t p)
    {
    return p & 1;
    }

    void *get_pointer(uintptr_t p)
    {
    return (void *)(p & (UINTPTR_MAX ^ 1));
    }

    uintptr_t set_flag(uintptr_t p, bool value)
    {
    return (p & (UINTPTR_MAX ^ 1)) | value;
    }

关于c - 从指针中窃取位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389243/

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