内存块重叠的判断方法

内存块a, 起点为a1, 终点为a2, a2>=a1;

内存块b,起点为b1, 终点为b2, b2>=b1;

如满足条件b1<=a2 && a1<=b2,则内存块重叠;

如满足条件a1>b2 || b1>a2, 则内存块不重叠。

此结论可以推广到其他一维线性区间重叠的判断。比如时间段,IP地址段等。


推论过程;

两种不重叠的情形:a1>b2 || b1>a2

(1)a1>b2

a                   -------------

b ----------

(2) b1>a2

 

a --------

b                   --------------


将不重叠的情形取反,就得到重叠的情形。

!(a1>b2 || b1>a2)  =>  b1<=a2 && a1<=b2

 

posted @ 2013-09-04 19:04  pangbangb  阅读(248)  评论(0编辑  收藏  举报