# 功能变更 ID: Feature-20260409-0001 > 适用场景:记录小到中等规模的功能、接口、行为、默认值或配置变化。 > 不适用场景:新增核心模块、重大模块重构、架构级设计,请使用“新增功能模块”模板。 ## 基本信息 - ID: Feature-20260409-0001 - 标题: 基础资源所有权与生命周期收口 - 状态:已完成 - 类型:修改 - 级别:L2 中等 - 模块:Control / Window / Button / Table / Label - 版本 / 分支:`master` - 环境:Windows + EasyX + VS2022 - 负责人:Codex 协作修改 ## 变更背景 - 背景: - 初始版本中一部分资源持有关系不明确,析构顺序和边界输入处理存在隐患。 - 目标: - 提高基础稳定性与维护性。 - 不做什么:[可选] - 不处理字符集体系切换问题。 ## 变更内容 - 变更摘要: - 收紧资源所有权,调整析构顺序,补齐基础控件边界防御。 - 新增项:[可选] - `Control` 提供更明确的快照有效性查询和宿主窗口回溯能力。 - 修改项:[可选] - `Window` 析构顺序调整 - `Table` 行数据规范化、空状态防御、页数保护 - `Label` 动态文本变化处理 - 删除 / 废弃项:[可选] - `MessageBox` 外层强制 `Dialog` 初始化的做法被移除 - 受影响的文件 / 类 / 函数: - `Control.h / Control.cpp` - `Window.h / Window.cpp` - `Button.h / Button.cpp` - `Table.h / Table.cpp` - `Label.cpp` - `MessageBox.cpp` - 对外 API / 属性变化:[可选] - `Button` 回调设置接口语义更正常 ## 行为对照 - 变更前: - 生命周期和边界输入更依赖使用者自觉,异常输入容易直接进入绘制或析构链。 - 变更后: - 基础控件会主动规范化一部分输入,生命周期顺序更安全。 - 兼容性说明:兼容 - 迁移说明:[可选] - 无强制迁移要求 ## 验证与落地 - 验证方式: - 静态审查 + 编译验证 + 现有测试用例回归 - 验证结果: - 主要基础问题已收敛 - 关联 BUG / Fix:[可选] - `BUG-20260409-0002` - `Fix-BUG-20260409-0002` - Commit: - 早期工作区修改 + `4a6e153` + `7f8431a` - PR:[可选] - 发布版本:[可选] - 备注:[可选] - 其中一部分修改早于仓库基线