diff --git a/memhub.vp b/memhub.vp index 6c0623f..a346327 100644 --- a/memhub.vp +++ b/memhub.vp @@ -34,7 +34,13 @@ MEMBUDDY_CANARY: t.CDefine = 8 # alloc 时把用户数据区填充 0xCD 哨兵。若对象初始化(list.__init__ 等) # 未执行,其字段保持 0xCDCD...,CTORDBG/VDBG 打印字段时一眼可辨 # "未初始化(0xCDCD)" 与 "被覆盖(其他值)"。0=关闭(性能),1=开启。 -MEMBUDDY_FILL_GUARD: t.CDefine = 1 +# 热点优化(实测):默认开启时每次 alloc 都 memset 用户数据区(约 2278 万次, +# 占全程序 memset 的 68%),纯诊断用途。默认改为 0(关闭);排查未初始化读取 +# 时置 1 即可——开启后填充代码逐字节不变(沿用 MEMBUDDY_THREAD_SAFE 的编译期 +# 开关范式)。关闭不破坏 self_check/canary 不变量:块尾哨兵取自 +# MEMBUDDY_CANARY/MEMBUDDY_CANARY_PATTERN,free 后填充由 detection 分支 +# (detection!=0)控制,二者与 FILL_GUARD 解耦。 +MEMBUDDY_FILL_GUARD: t.CDefine = 0 MEMBUDDY_FILL_PATTERN: t.CDefine = 0xCD # [DET] 分配检测(alloc 前后 2 字节 0xCDCD 标记 + 记录表探测越界写):