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 或任何地方),以及它是如何分配的。