perf(memhub): 0xCD 分配填充守卫默认关闭,消除约 2278 万次 memset

MEMBUDDY_FILL_GUARD 属纯诊断填充(占全程序 memset 68%),默认由 1 改为 0;置 1 时填充代码逐字节不变。关闭不影响 self_check 块尾 canary 与 detection 标记(分别取自 MEMBUDDY_CANARY / MEMBUDDY_DET_MARKER,与 FILL_GUARD 解耦)。
This commit is contained in:
TermiNexus committed 2026-09-13 22:14:18 +08:00
1 parent 64194f8b78
commit 215a1ca36a
1 file changed
+7 -1
+7 -1
View File
@@ -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 标记 + 记录表探测越界写):