• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

размер Struct...

  • Автор темы debug
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

debug

Разъясните мне пожалуста, что пишет компилятор С++ и С
при создании структуры в первые два её байта?
Ну к примеру есть некая структура:

struct MMM {
short i;
char a;
short g;
} mmm;

Вручную размер подсчитать запросто - это 5 байт. Однако sizeof MMM выдаст 7.
Причём как компилер Borland так и Microsoft.
debug
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
ничего он туда не пишет, а дополнительные байты появляются из-за выравнивания.

Используя следующий код ставим выравнивание по границе байта и получаем законные 5 байтов
#pragma pack(push,1)
struct MMM {
short i;
char a;
short g;
} mmm;
#pragma pack(pop)
 
D

debug

Ещё один вопрос начинающего, вот код
Но результаты почему то не такие, какие ожидаются мной :)

struct SIGNAL_STATUS {
char status_t;
unsigned short gNumber;
unsigned char sNumber;
unsigned short info;
unsigned short panel;
};

char temp[16];
memset(temp, 0, 16);
temp[0]=0x14;
temp[1]=0;
temp[2]=0x01;
temp[3]=0x01;
temp[4]=0;
temp[5]=0;
temp[6]=0;
temp[7]=0x01;
SIGNAL_STATUS *sg=(SIGNAL_STATUS*)temp;
sg->status_t;
sg->gNumber;
sg->sNumber;
sg->info;
sg->panel;
Результаты:

sg->status_t=14
sg->gNumber=257
sg->sNumber=0
sg->info=256
sg->panel=0

Почему так? Это тоже из-за выравнивания или это похоже на сетевой порядок байт.
 
6

62316e

Дык. А каких результатов ты ожыдал?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!