5
假設我有一個類,並且它或它的成員沒有可見問題,但是如果我嘗試將幾個類成員的地址傳遞給同一模塊中的另一個類,第一個參數正確傳遞,但第二個參數始終是NULL!怎麼會這樣?是否會有某種隱藏的堆棧/堆損壞或某種對齊問題?有在沒有問題MSVC,但...Apple GCC 4.2.1將指針傳遞給構造函數
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)));
適用於使用gcc 4.0的ppc mac。你能否展示一個證明問題的完整例子? –
是的,這個簡單的例子一如既往地正常工作。我無法告訴你一個完整的例子,因爲它有數十萬行代碼... – Ryan
我已經嘗試了很多變體,但似乎無論我傳遞什麼樣的數據,只有第一個參數是通過正確...有一些肯定是錯誤的堆棧:( – Ryan