gpt4 book ai didi

c++ - Eigen 和动态分配

转载 作者:行者123 更新时间:2023-11-30 00:52:09 25 4
gpt4 key购买 nike

我在 C++ 中有一些数学计算,我正在转向 Eigen。以前,我手动滚动了自己的 double* 数组,还使用了 GNU 科学图书馆的 gsl_matrix

令我困惑的是 FAQ of Eigen 中的措辞.这是什么意思,是否正在进行某种引用计数和自动内存分配?

我只需要确认这在 Eigen 中仍然有效:

// n and m are not known at compile-time
MatrixXd myMatrix(n, m);
MatrixXd *myMatrix2 = new MatrixXd(n, m);

myMatrix.resize(0,0); // destroyed by destructor once out-of-scope
myMatrix2->resize(0,0);
delete myMatrix2;
myMatrix2 = NULL; // deallocated properly

最佳答案

这是有效的。但是,请注意,即使您将数组的大小调整为 0MatrixXd 对象仍然存在,只是它包含的数组不存在。

{
MatrixXd myMatrix(n, m); // fine
} // out of scope: array and matrix object released.

{
auto myMatrix = new MatrixXd(n, m); // meh
delete myMatrix; // both array and matrix object released
}

{
auto myMatrix = new MatrixXd(n, m); // meh
myMatrix->resize(0, 0); // array released
} // out of scope: matrix object leaks

避免使用 new 并尽可能使用自动存储期限。在其他情况下,使用 std::unique_ptr

关于c++ - Eigen 和动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com