Допустим, у меня есть класс, и нет видимых проблем с ним или его членами, однако, если я пытаюсь передать адреса нескольких членов класса другому классу в том же модуле, первый аргумент передается правильно, но второй всегда NULL ! Как это может быть? Может ли быть какое-то скрытое повреждение стека / кучи или какая-то проблема с выравниванием? В MSVC проблем нет, хотя ...
class myType2
{
char c1;
char c2;
} __attribute__ ((aligned (1))); // Yes, align differs and I can't change it
class MyClass2
{
public:
MyClass2(myType1* type1, myType2* type2, int data)
{
// type1 and data are ok, but type2 is NULL...
}
} __attribute__ ((aligned (16)));
class MyClass
{
public:
myType1 type1;
myType2 type2;
//....
void test()
{
MyClass2 test1(&this->type1, &this->type2, 170);
MyClass2* pTest2 = new MyClass2(&this->type1, &this->type2, 170); // Same result
myType2 localType2;
MyClass2 test3(&this->type1, &localType2, 170); // Same result!!!
}
} __attribute__ ((aligned (16)));