| fix: 修复examples中多个算子的内存泄漏及缓冲区越界问题 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !1261 merge master_issue_handle into master fix: 修复examples中多个算子的内存泄漏及缓冲区越界问题 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: Closes #719, #723, #724, #725, #731 ## 描述 修复多个算子的内存泄漏及缓冲区越界问题,涉及 example 文件、kernel、aicpu 算子、UT 框架共 24 个文件。 ### 修复分类 | 类别 | 文件数 | 问题 | |------|--------|------| | 内存泄漏 | 18 | new[] 分配后未 delete[],Tensor 构造后 buffer 泄漏 | | 缓冲区越界 | 1 | nms_with_mask.h:sizeof(T) 应为 sizeof(uint8_t),float 类型下读取 4 倍数据 | | 错误处理缺失 | 1 | scale_and_translate_aicpu.cpp:spans 分配/计算失败后未释放已分配内存、返回值未检查 | | 空指针保护 | 1 | c_shell.cpp:realpath 返回值未判空 | | UT 内存泄漏 | 1 | tensor_desc.cpp:ts 数组 + tensor 未释放 | ### 关键修复 | 文件 | 问题 | 修复 | |------|------|------| | nms_with_mask.h | scoresLength * sizeof(T) 当 T=float 时越界读取 4 倍数据 | 改为 sizeof(uint8_t) | | scale_and_translate_aicpu.cpp | spans 分配失败后泄漏 + 返回值不检查 | 每条错误路径补充 cleanup;SWITCH_PARALLEL 改为显式分支并检查返回值 | | 17 个 example 文件 | new[] 分配后 Tensor 构造完未 delete[] | 补充释放 | | c_shell.cpp | realpath(NULL) 返回 NULL 时 crash | 判空 + free | | tensor_desc.cpp | ts 数组 + tensor 泄漏 | 补充释放逻辑 | ### 功能影响 正常执行路径零影响,异常路径从静默吞错改为正确返回错误码。 ## 关联的Issue - #719 - #723 - #724 - #725 - #731 ## 测试 相关功能点都已经经过测试。 ## 文档更新 op_list.md 增加说明。 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-cv!1261 | 9 天前 |