﻿# V124\. Function 'Foo' writes/reads 'N' bytes\. The alignment rules and type sizes have been changed\. Consider reviewing this value\.


> Это правило входит в группу "Диагностика 64\\\-битных ошибок"\\\. Разработка правил этой группы больше не ведётся, и в будущем они могут быть отключены\\\. Если вы используете эти правила, \[свяжитесь с нашей поддержкой\]\(https://pvs\-studio\.ru/ru/about\-feedback/\) — мы поможем найти замену или предложим альтернативное решение\\\.

Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что размер записываемых или читаемых данных явно задан константой\.

При компиляции в 64\-битном режиме изменяется размер некоторых типов, а также границы их выравнивания\.  Размеры основных типов и границы их выравнивания показаны на рисунке:

![V124_ru/image1.png](https://import.viva64.com/docx/blog/V124_ru/image1.png)

Анализатор обращает внимание на те места в коде, где размер записываемых/читаемых данных указан явным образом\. Эти места программисту следует проверить\. Пример кода:

```cpp
size_t n = fread(buf, 1, 40, f_in);
```

Константа 40 может являться некорректным значением в рамках 64\-битной системы\. Возможно, более правильно будет написать:

```cpp
size_t n = fread(buf, 1, 10 * sizeof(size_t), f_in);
```