请参阅下面的代码:
double* data = new double[100];
boost::shared_ptr<Eigen::VectorXd> rfstdevs = boost::make_shared<Eigen::VectorXd>(
Eigen::Map<Eigen::RowVectorXd>(data, 1, 100));
我的理解是Eigen将直接使用缓冲区并使用它,所以我应该手动释放数据缓冲区,还是新创建的VectorXd会为我做这件事?
谢谢...
答案 0 :(得分:1)
这会从中执行深层复制,因此您需要释放data
。如果您不需要深层副本,请直接使用Map
对象:
Map<RowVectorXd> rfstdevs(data,1,100);
您仍然需要自己删除data
,Map
不会这样做,因为它不知道它来自哪里。