Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, B0FEE664, Вы писали:
К>Дебажные блоки нужно добавить и спереди, и сзади
К>К>class TurbulenceInfo
К>{
К>public:
К> TurbulenceInfo(void);
К> virtual ~TurbulenceInfo(void);
К> char m_dummy_debug_1[64];
К> double TO; // turbulence onset
К> double TS; // turbulence slope
К> double TJ; // turbulence jump
К> int TT; // turbulence timing
К> int index;
К> int TSIndex;
К> bool appropriate;
К> CTime time;
К> char m_dummy_debug_2[64];
К>};
К>/////////
К>TurbulenceInfo::TurbulenceInfo(void)
К>{
К> // заполняем дебажные блоки калиброванным мусором
К> memset(m_dummy_debug_1, 0xCD, sizeof(m_dummy_debug_1));
К> memset(m_dummy_debug_2, 0xB5, sizeof(m_dummy_debug_2));
К> // и далее - обычная инициализация всего
К> .....
К>}
К>
Получилось так:
в m_dummy_debug_1 последние 4 байта изменились. Попробовал
(double&)&ti->m_dummy_debug_1[60]
И, действительно, получил то, что должно быть в TO, т.е. все съехало на 4 байта.
m_dummy_debug_2 не изменился.
Добавил void* dummy; в начало класса. Выполняю присваивание ti->time = (CTime)123456; Получилось так:
m_dummy_debug_1 не изменился.
m_dummy_debug_2 первые 8 байт обнулилиись.
ti->time = ерунда
(__time64_t&)&ti->m_dummy_debug_2[-11] = то, что я записывал в ti->time