Если проект измерил, или неразмерная версия оператора 'удаляют' глобально заданный, то и измеренные и неразмерные версии должны быть заданы.
Если проект измерил, или неразмерная версия оператора 'удаляют' глобально заданный, то и измеренные и неразмерные версии должны быть заданы.
C++ 14 Стандартов задает размерную версию operator delete. Например, для неразмерного operator delete с этой подписью:
void operator delete (void* ptr);
void operator delete (void* ptr, std::size_t size);
operator delete.Стандарт утверждает что если обе версии operator delete существуйте, размерная версия должна быть названа, потому что она обеспечивает более эффективный способ освободить память. Однако в некоторых случаях, например, чтобы удалить неполные типы, неразмерная версия используется.
Если вы перегружаете неразмерную версию operator delete, необходимо также перегрузить размерную версию. Вы обычно перегрузка operator delete выполнять некоторую бухгалтерию в дополнение к освобождению памяти на свободном хранилище. Если вы перегрузите неразмерную версию, но не размерную или наоборот, то любая бухгалтерия, которую вы выполняете в одной версии, будет не использована от другой версии. Этот пропуск может привести к неожиданным результатам.
Средство проверки отмечает ситуации где неразмерная версия operator delete существует, но соответствующая размерная версия не задана, или наоборот.
Средство проверки включено, только если вы задаете версию C++ C++ 14 или позже. Смотрите C++ standard version (-cpp-version).
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
| Группа: вспомогательная библиотека языка |
| Категория: необходимый, автоматизированный |
Check AUTOSAR C++ 14 (-autosar-cpp14) | Invalid deletion of pointer | Invalid free of pointer | Memory leak | Mismatched alloc/dealloc functions on Windows | Missing overload of allocation or deallocation function