diff --git a/includes/memhub.vp b/includes/memhub.vp index 9204c39..c198ec5 100644 --- a/includes/memhub.vp +++ b/includes/memhub.vp @@ -908,6 +908,16 @@ class MemBuddy(MemManager): cis: t.CUInt64T = self._det_records[idx2 * 2 + 1] stdio.printf("[%d]ptr=%llu sz=%llu ", ci2, cip, cis & (free_flag - 1)) ci2 += 1 + # 重叠检测:同一 ptr 是否有多条记录(alloc 重叠实锤——不同 size + # 请求拿到同一块 → 互相覆盖;如 Token(72B) 与字符串 buf(7B) 共用块) + stdio.printf("\n同ptr记录: ") + ci3: t.CSizeT = 0 + while ci3 < self._det_count: + cp3: t.CUInt64T = self._det_records[ci3 * 2] + cs3: t.CUInt64T = self._det_records[ci3 * 2 + 1] + if cp3 == p and (cs3 & free_flag) == 0: + stdio.printf("[%zu]sz=%llu ", ci3, cs3 & (free_flag - 1)) + ci3 += 1 stdio.printf("\n") stdlib.exit(1) i += 1