возвращение структуры с помощью публичной функции сбой указателя экземпляра

Я новичок в C ++ и RTOS, так что не вините меня и не смейтесь надо мной

я имею:

typedef struct
{
//... 10 uint8 and 2 enums
} tStruct1;
typedef struct
{
//... slightly different, but completely different enums
} tStruct2;

class someClass
{
private:
struct
{
//...
union
{
tStruct1 s1;
tStruct2 s2;
} data;
} node[10];
//...
public:
unsigned int length;

tStruct1 Get1(void);
tStruct2 Get2(void);
//...
}

tStruct1 someClass::Get1(void)
{
//...
length--;
return node[length].data.s1;
}

tStruct2 someClass::Get2(void)
{
//...
length--;
return node[length].data.s2;
}

и в некотором другом классе:

someClass * inst1 = new someClass();

это работает нормально:

inst1->Get1(void); //useless...

и это:

tStruct1 something = inst1->Get1(void);

перемещает inst1 куда-нибудь еще. Бывает 3 инструкции до переход к функции, указатель стека уменьшается на 0x14 (размер элементов структуры, вероятно, 0x12 + выравнивание -> я думаю, что все в порядке) и увеличивается обратно. Кажется, сама функция работает нормально. Возвращаемое значение является неинициализированным значением.

bool result = instance_of_someOtherClass->inst1->Set(tStruct1);

тоже работает отлично.

Эти 2 звонка сделаны из разных потоков. В любом случае, я собираюсь выбросить этот класс, потому что проект изменился, но я хочу знать, что я делаю неправильно.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]