gpt4 book ai didi

c++ - Apple GCC 4.2.1 将指针传递给构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:00 24 4
gpt4 key购买 nike

假设我有一个类并且它或其成员没有明显的问题,但是如果我尝试将几个类成员的地址传递给同一模块中的另一个类,第一个参数被正确传递,但是第二个总是 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)));

最佳答案

Blasted GCC...:doubleFacePalm 我无法正常解决这个问题,但我找到了一个变通方法,即在按 16 字节边界对齐的结构中传递所有类构造函数数据。

关于c++ - Apple GCC 4.2.1 将指针传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com