内存块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