Как все может работать, если вы даже неправильно определили размер типов данных? - PullRequest
0 голосов
/ 31 марта 2011

Это то, что в коде:

typedef  unsigned long  int  ub4;   /* unsigned 4-byte quantities */

Однако:

(gdb) p sizeof(unsigned long  int)
$7 = 8

Так что unsigned long int фактически занимает 8 байтов для моего процессора.Вы такие фундаментальные ошибки ??

Кстати, почему ub4 не может быть распознан GDB ??

(gdb) p sizeof(ub4)
No symbol "ub4" in current context.

1 Ответ

0 голосов
/ 31 марта 2011

Я собираюсь предположить, что вы говорите о C. Пожалуйста, пометьте свой вопрос на правильном языке.

Все еще может "работать", пока у разработчика не будет кода, который предполагает a ub4 - это точно 4 байта.Затем такие ошибки могут привести к таким вещам, как переполнение буфера (которые могут быть явно не обнаруживаемыми или даже могут оставаться незамеченными в течение многих лет до случайного проявления симптомов) ... или они могут просто не вызывать симптомов.Они все еще вызывают Undefined Behavior, хотя и должны быть исправлены.

Возможно также, что разработчик просто никогда не использовал ширину шрифта в качестве предположения в своем коде.

...