如何检查指针是否重叠?

时间:2011-09-20 08:20:16

标签: c pointers

我在这里读了一个提示: http://www.cprogramming.com/tips/showTip.php?tip=183

话说:

  

如果没有指向相同的内存位置范围,也会监视指针是否重叠。

怎样才能监控这样的事情?将每个指针相互比较显然是愚蠢的。

2 个答案:

答案 0 :(得分:2)

你不能,也不应该经常。这可能只是作者遇到的一些问题的调试提示,可能在嵌入式系统中很有用。

一般情况下,valgrind可以帮助您解决指针问题,而不是任何手动比较。

答案 1 :(得分:0)

这是检查重叠的方法:

T *a, *b;
// ...
if (abs((int)((void*)a - (void*)b)) < sizeof(T))
    // overlap

但我看不出有任何理由检查它。