Класс C++, содержащий два вектора Eigen, имеет странный размер. У меня есть MWE моей проблемы здесь:Странный размер класса, содержащий собственные векторы
#include <iostream>
#include "Eigen/Core"
class test0 {
Eigen::Matrix<double,4,1> R;
Eigen::Matrix<double,4,1> T;
};
class test1 {
Eigen::Matrix<double,4,1> R;
Eigen::Matrix<double,3,1> T;
};
class test2 {
Eigen::Matrix<double,4,1> R;
Eigen::Matrix<double,2,1> T;
};
class test3 {
Eigen::Matrix<double,7,1> T;
};
class test4 {
Eigen::Matrix<double,3,1> T;
};
int main(int argc, char *argv[])
{
std::cout << sizeof(test0) << ", " << sizeof(test1) << ", " << sizeof(test2) << ", " << sizeof(test3) << ", " << sizeof(test4) << std::endl;
return 0;
}
Выход я получаю в моей системе (MacBook Pro, Xcode Clang ++ компилятор) является:
64, 64, 48, 56, 24
Класс «test1» имеет несколько причудливых дополнительных дополнений - я бы ожидал, что он будет иметь размер 56. Я не понимаю причину этого, особенно учитывая, что ни один из других классов не имеет дополнения. Может кто-нибудь объяснить, или это ошибка?
«Я бы ожидал, что он будет иметь размер 56» - почему? –
@latedeveloper, потому что он имеет 7 двухместных номеров. – zneak
Я действительно имел в виду «почему, по вашему мнению, компилятор не может добавлять любые дополнения, которые ему нравятся, если только вы явно не контролируете его?» –