company-desktop-computer/fix/ewequipment-memory-v2 AGit
main
releaseData() 原来按 m_eType 分两路(8 种 delete[],其余 delete),但同一类型 在内存里可能是对象也可能是字节数组:开图、JSON 导入、深拷贝都分配 new byte[], 而对话框里 setData 的 default 分支和几处直接 new 分配的是对象。按类型判断 必然有一半场景不匹配。
releaseData() 原来按 m_eType 分两路(8 种 delete[],其余 delete),但同一类型 在内存里可能是对象也可能是字节数组:开图、JSON 导入、深拷贝都分配 new byte[], 而对话框里 setData<T> 的 default 分支和几处直接 new 分配的是对象。按类型判断 必然有一半场景不匹配。 - 13 处对象形式分配统一改成 new unsigned char[sizeof(T)],后续 (T*)m_pData 的用法不变 - releaseData() 去掉 switch,只保留 delete[];~XPrimData() 改为先调 releaseData(), 顺带修掉 m_Combins 子单元的 m_pData 泄漏 - AecDbEwEquipment::FreeSubPrimData() 取代 FreeBuffer(CPtrArray&),改成成员函数, 不再需要参数 - 另外三个文件作用域的 FreeBuffer/FreeBuffer2/FreeBuffer3 改名为 FreeEntityArray/ FreeComplexCurveArray/FreeFaceplanArray,并加 static 收回内部链接 - 删除 ReleaseXPrimData,直接 releaseData() + DELETE_PTR
No dependencies set.
The note is not visible to the blocked user.
releaseData() 原来按 m_eType 分两路(8 种 delete[],其余 delete),但同一类型
在内存里可能是对象也可能是字节数组:开图、JSON 导入、深拷贝都分配 new byte[],
而对话框里 setData 的 default 分支和几处直接 new 分配的是对象。按类型判断
必然有一半场景不匹配。
的用法不变
顺带修掉 m_Combins 子单元的 m_pData 泄漏
不再需要参数
FreeComplexCurveArray/FreeFaceplanArray,并加 static 收回内部链接