Eigen's Matrix 在其生命周期结束时会删除动态分配的数据吗?
Does Eigen's Matrix delete dynamically-allocated data when it's lifetime is over?
请考虑以下代码段中的过程。首先动态创建数据,然后使用数据创建特征矩阵。在这种情况下,矩阵会在生命周期结束时释放 data
的内存?
我猜想在 Eigen::Map
操作中,指针被复制而 data
的实际元素没有被复制。因此,希望矩阵释放 data
.
的内存
#include<Eigen/Core>
using namespace Eigen;
int main(){
double* data = new double [6];
double* itr = data;
for(int i=0; i<6; i++){
*(itr++) = i;
}
auto m = Map<MatrixXd>(data, 2, 3);
}
矩阵在生命周期结束时不会释放data
的内存。
Eigen 无法猜测您的指针位于何处(Stack/Heap 或任何地方),以及它是如何分配的。
请考虑以下代码段中的过程。首先动态创建数据,然后使用数据创建特征矩阵。在这种情况下,矩阵会在生命周期结束时释放 data
的内存?
我猜想在 Eigen::Map
操作中,指针被复制而 data
的实际元素没有被复制。因此,希望矩阵释放 data
.
#include<Eigen/Core>
using namespace Eigen;
int main(){
double* data = new double [6];
double* itr = data;
for(int i=0; i<6; i++){
*(itr++) = i;
}
auto m = Map<MatrixXd>(data, 2, 3);
}
矩阵在生命周期结束时不会释放data
的内存。
Eigen 无法猜测您的指针位于何处(Stack/Heap 或任何地方),以及它是如何分配的。