std :: vector <Eigen :: Matrix4f>分配了内存,但无法访问其元素

时间:2019-06-14 19:03:53

标签: c++ gcc vector segmentation-fault eigen

我创建了一个包含100 Eigen :: Matrix4f的向量。但是,当我使用transforms[i]访问其元素时,该程序显示“核心转储:分段错误”。当我使用push_back()函数对其进行初始化时,它可以很好地工作。 我检查了向量的大小。是100。对此我感到困惑。

它在Ubuntu 16.04中。我使用CMake + GCC进行编译。

分段错误C ++代码

std::vector<Eigen::Matrix4f> transforms(100);
//transforms.size() is 100. I checked it.
for(int i = 0; i < transforms.size(); i++)
{
    //I use transforms[i] to access the element in transforms.
    transforms[i] = a_function_returns_a_valid_Matrix4f();
}

以下代码通过使用std::vector::push_back()起作用。

std::vector<Eigen::Matrix4f> transforms;
for(int i = 0; i < 100; i++)
{
    //When I use push_back() to initialize transforms, it works.
    transforms.push_back(a_function_returns_a_valid_Matrix4f());
}

似乎std::vector正确分配了内存。我检查了它的大小。 但是无法使用transforms[i]访问其元素。

0 个答案:

没有答案