﻿# V630\. The 'malloc' function is used to allocate memory for an array of objects that are classes containing constructors/destructors\.

Анализатор обнаружил потенциальную ошибку, связанную с использованием одной из функций динамического выделения памяти, такой как  malloc, calloc, realloc\. С выделенной памятью работают как с массивом объектов, имеющих конструктор или деструктор\. При таком выделении памяти для класса не будет вызван конструктор\. При освобождении памяти с помощью функции free не будет вызван деструктор\. Это крайне подозрительно\. Подобный код может привести к работе с неинициализированными переменными и другим ошибкам\. 

Рассмотрим пример некорректного кода:

```cpp
class CL
{
  int num;
public:
  CL() : num(0) {...}
  ...
}; 
... 
CL *pCL = (CL*)malloc(sizeof(CL) * 10);
```

В результате переменная 'num' будет не инициализирована\. Конечно, можно вызвать конструктор для каждого объекта "вручную", но более правильным будет использование оператора 'new'\.  

Исправленный вариант:

```cpp
CL *pCL = new CL[10];
```