Я создал вектор, который содержит 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]
.