Функции malloc, calloc, realloc и free не должны использоваться
Функции malloc, calloc, realloc и free не должны использоваться.
Выделение и удаление памяти в стиле C с помощью malloc
, calloc
, realloc
, или free
не является безопасным типом и не вызывает конструкторы/деструктор класса для создания/удаления объектов.
Для образца, malloc
выделяет память объекту и возвращает указатель на выделенную память типа void*
. Программа может затем неявно привести возвращенный указатель к другому типу, который может не совпадать с предполагаемым типом объекта.
Использование этих функций выделения и удаления может привести к неопределенному поведению, если:
Вы используете free
для удаления памяти, выделенной оператору new
.
Вы используете оператор delete
для удаления памяти, выделенной с помощью malloc
, calloc
, или realloc
.
Правило не нарушается при выполнении динамического выделения или удаления памяти с помощью перегруженных new
и delete
операторы или пользовательские реализации malloc
и free
.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: 18 Language Support Library |
Категория: Необходимый, Автоматизированный |