如何解决删除原始数据后,Eigen Map 返回部分垃圾
我正在尝试使用 Eigen::Map
将指向原始数据的指针转换为矩阵,然后释放原始数据,但不断得到一些奇怪的结果,就好像 Eigen::Map
中的数据本身是删除。我以为 Eigen::Map
执行了深层复制,但也许这仅在您将 Eigen::Map
转换为矩阵后才会发生?
这是一些测试代码:
#include <Eigen/Dense>
int main(int argc,char const *argv[])
{
double* data = new double[4];
data[0] = 1;
data[1] = 2;
data[2] = 3;
data[3] = 4;
Eigen::Map<Eigen::Matrix<double,2,Eigen::RowMajor>> M(data);
Eigen::Matrix<double,Eigen::RowMajor> N = M.matrix();
std::cout << M << std::endl;
std::cout << N << std::endl;
delete[] data;
std::cout << M << std::endl;
std::cout << N << std::endl;
return 0;
}
这对我来说是这样的:
1 2
3 4
1 2
3 4
0 4.67506e-310
3 4
1 2
3 4
在我的示例中,从 M 获取这种行为是不是我做错了什么?或者你应该像我一样把它转换成 N 吗?这是低效的,还是 Eigen 以某种聪明的方式处理分配 N = M.matrix() ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。