我创建了一个包含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]
访问其元素。