﻿# V613\. Suspicious pointer arithmetic with 'malloc/new'\.

Анализатор обнаружил потенциальную ошибку в коде, выделяющем память\. Указатель, который возвращается функцией 'malloc' или аналогичной ей, складывается с каким\-то числом\. Это очень подозрительно и высока вероятность, что в коде имеется опечатка\.

Рассмотрим пример:

```cpp
a = ((int *)(malloc(sizeof(int)*(3+5)))+2);
```

В выражении много лишних скобок и вероятно программист  в них запутался\. Давайте упростим этот код для наглядности:

```cpp
a = (int *)malloc(sizeof(int)*8);
a += 2;
```

Очень странно, прибавлять к указателю число 2\. Даже если так надо и код правильный, он очень опасен\. Например, очень легко забыть, что освобождать память надо так: "free\(a \- 2\);"\.

Корректный вариант кода:

```cpp
a = (int *)malloc(sizeof(int)*(3+5+2));
```