я вот почему спросил...если кому интересно(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Romario 12 марта 2003 г. 14:13
В ответ на: Правомерно ли сравнивать структуры by memcmp? отправлено Romario 12 марта 2003 г. 13:50

была некоторая структура A которая содержала в себе "простые" типы (char,int...) и еще одну структуру. Сравнение двух переменных типа А с помошью memcmp (аргумент размера функции memcmp был sizeof(A)) всегда был на ура. Я считал что кусок кода содержащий данную функцию сравнения отлажен и заподозрить его было не в чем.
Но вот седня убрал одну из переменных (простого типа) из структуры А. Из одной части программы кусок сравнения отрабатывался нормально, но в вот в другом вызове memcmp говорила что не равны, хотя тупая распечатка элементов структуры говорила что они равны.
В итоге все заработало, когда при инициализации членов структуры А
написал memset(A,0,sizeof(A)).
Почему были глюки уже наверна догадались - структура содеоржала "левые" байты для выравнивания переменной А на границу кратную X. А при объявлении структуры и последующей инициализации ее членов "левые" байты содержали всякий мусор.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru