Нет, это должен быть самый оптимальный порядок, основанный на обычном поведении компилятора (учитывая, что стандарт на самом деле не предписывает, как структуры упакованы относительно промежутков между элементами, хотя он гарантирует, что порядок указано: см. «6.2.5 Типы» последней версии C1x-n1425).
У вас есть все ваши указатели спереди и все ваши символы спереди, так что вы, вероятно, обнаружите, что с четырехбайтовым размером указателя вы получите 19- или 20-байтную структуру.
Вы можете легко проверить это, вставив в код следующие строки:
printf ("Size of dbentry* is %d\n", sizeof (struct dbentry_s*));
printf ("Size of char* is %d\n", sizeof (char*));
printf ("Size of uns char is %d\n", sizeof (unsigned char));
printf ("Size of stucture is %d\n", sizeof (dbentry));
Причина, по которой я вставил все чеки sizeof
, состоит в том, чтобы убедиться, что у вас есть полная информация. Я хорошо знаю, что sizeof(char)
всегда равен 1.