我依靠std::vector
来保存大量的Eigen::MatrixXd
。不是C++专家,我发现自己想知道用这种结构正确管理内存分配的最佳方法是什么。特别是,我的问题是,使用它作为类成员,我如何释放类析构函数中分配的内存?使用std :: vector进行内存管理<Eigen :: MatrixXd>
使用std :: vector; 使用Eigen :: MatrixXd;
Class myClass{
//...
vector<MatrixXd> container;
//...
myClass();
~myClass();
}
构造&析构函数的myClass
:
myClass::myClass(){
//...
container=vector<MatrixXd>(100);
for (int i=0; i<container.size(); i++) container[i]=MatrixXd::Zero(100,100);
//...
}
myClass::-myClass(){
//...
for (int i=0; i<container.size(); i++) container[i].resize(0,0);
container.clear();
//...
}
它是不够的,只是叫clear()
,因为我已经调整本征矩阵为(0,0),或是否需要使用delete
?用vector<MatriXd*>
代替它有什么优势吗?
'std :: vector'在超出范围时将销毁它的元素。然而,如果你将指针存储在'std :: vector'中,你将不得不自己释放内存。 – Kunal