gpt4 book ai didi

c++ - 如何回溯指针?

转载 作者:太空狗 更新时间:2023-10-29 20:27:45 29 4
gpt4 key购买 nike

假设我有 2 个指向同一内存位置的指针。如果我知道它是什么地址,我如何找出指向该位置的指针?

int x=5;
int* p1=&x;
int* p2=&x;

如何获取p1和p2的地址?甚至可以在 C/C++ 中执行此操作吗?如果不是,那么是否可以搜索所有指针并查看哪些指针具有 &x 的值?

最佳答案

不,在 C 或 C++ 中“回溯”指针是不可能的(一个好的经验法则是,如果一个特性有很大的隐藏性能成本,那么它在 C 或 C++ 中不存在)

至于第二种方法(通过内存寻找指针),这正是一些工具,如 Boehm garbage collector做。但是,此过程不仅效率低下且不可移植,而且还可能导致“误报”,因为您无法判断内存中的字节模式是真正的指针还是其他东西,例如常规整数或字符串的一部分。


无论如何,您应该问问自己真正需要解决的问题是什么,而不是尝试自己破解垃圾收集器。根据你想做什么,有很多方法可以在 C++ 中实现它(RAII、智能指针等)

关于c++ - 如何回溯指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15263055/

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