假设T
包含一个数组,其大小可能因初始化而异。我指针传递到载体中以避免复制的所有数据,并初始化如下:使用std :: vector控制内存<T*>
for(int i=10; i < 100; i++)
std::vector.push_back(new T(i));
在退出,一个delete
S中的向量的元素的。如果包含在T
中的数据也是一个指针,即使有很好的析构函数,是否也有内存丢失的风险?例如
template<class M> class T{
M * Array;
public:
T(int i) : Array(new M[i]){ }
~T(){ delete Array;}
};
从我知道这是坏的风格,把元素创建新的向量。无论如何,向量的内存将在堆上... – guitarflow
为什么不在'T'里面使用一个向量来保存自己处理[Rule of Three](http://stackoverflow.com/questions/4172722)的麻烦?为什么不使用'vector'来保存删除元素时的麻烦? –
所以'T'有一个'M'类型的底层数组,并且你正在'std :: vector'中存储指向'T'的指针?为什么不使用'std :: vector>'并避免所有不必要的手动内存管理? –
Chad