Перегружена только одна функция в паре функций распределения-освобождения
Этот дефект возникает при перегрузке operator new но не перегружайте соответствующие operator delete, или наоборот.
Как правило, происходит перегрузка operator new для выполнения некоторых бухгалтерских операций в дополнение к выделению памяти в свободном хранилище. Если только вы не перегружаете соответствующий operator delete, вероятно, при освобождении памяти вы не использовали соответствующую бухгалтерию.
Дефект также может указывать на ошибку кодирования. Например, вы перегружали форму размещения operator new[]:
void *operator new[](std::size_t count, void *ptr);
operator delete[]:void operator delete[](void *ptr);
void operator delete[](void *ptr, void *p );
При перегрузке operator new, убедитесь, что вы перегружаете соответствующий operator delete в том же объеме и наоборот.
Например, в классе, если перегружена форма размещения operator new:
class MyClass {
void* operator new ( std::size_t count, void* ptr ){
...
}
};
operator delete:class MyClass {
void operator delete ( void* ptr, void* place ){
...
}
};Чтобы найти operator delete соответствующий operator new, см. справочные страницы для operator new и operator delete.
| Группа: Надлежащая практика |
| Язык: C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
MISSING_OVERLOAD_NEW_DELETE_PAIR |
| Воздействие: Низкий |
Find defects (-checkers) | Invalid deletion of pointer | Invalid free of pointer | Memory leak | Mismatched alloc/dealloc functions on Windows