#pragma once namespace MemOper { template void DELETE_PTR(T *&ptr) { if (ptr != NULL) { delete ptr; ptr = NULL; } } template void DELETE_ARR_(T *&arr) { if (arr != NULL) { delete[] arr; arr = NULL; } } template void deleteContainerOfStd(T &ss) { typename T::iterator it(ss.begin()); for (; it != ss.end(); ++it) delete(*it); ss.clear(); } template void deleteContainerOfArx(AcArray &ss) { for (int i = 0; i < ss.length(); ++i) { T *p = ss[i]; if (p) delete p; } ss.removeAll(); } // 删除 arx 容器内的指针 只指对AcArray及派生类 template void deleteContainerOfArx(T1 &ss) { for (int i = 0; i < ss.length(); ++i) { T2 *p = (T2*)ss[i]; delete p; } ss.removeAll(); } // delete AcArrayVoidPtrs template void deleteArrayVoidPtrs(AcDbVoidPtrArray &ptrs) { deleteContainerOfArx(ptrs); } };