假设我有2个指针指向相同的内存位置.如果我知道它是什么地址,我怎样才能找出指向该位置的指针?
int x=5;
int* p1=&x;
int* p2=&x;
我如何获得p1和p2的地址?是否有可能在C/C++中做到这一点?如果没有,那么是否可以搜索所有指针并查看哪些指针的值为& x?
解决方法:
不,它不可能在C或C中“回溯”指针(一个好的经验法则是,如果某个功能具有很大的隐藏性能成本,那么它在C或C中不存在)
至于第二种方法(通过内存寻找指针),这正是像Boehm garbage collector这样的工具.但是,这个过程不仅不合适而且不可移植,但它也可能导致“误报”,因为你无法判断内存中的字节模式是真正的指针还是其他类似普通整数或字符串的一部分.
无论如何,你应该问问自己,你需要解决什么是真正的问题,而不是试图自己破解垃圾收集器.根据你想要做的事情,有很多方法可以用C语言来处理它(RAII,智能指针等)