Только одна функция в паре функции освобождения выделения перегружается
Недостающая перегрузка функции выделения или освобождения происходит, когда вы перегружаете 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++ |
| Значение по умолчанию: 'off' |
Синтаксис командной строки:
MISSING_OVERLOAD_NEW_DELETE_PAIR |
| Удар: низко |
Find defects (-checkers) | Invalid deletion of pointer | Invalid free of pointer | Memory leak | Mismatched alloc/dealloc functions on Windows