Пользовательские реализации функций динамического выделения и освобождения памяти должны отвечать семантическим требованиям, указанным в соответствующем пункте «Требуемое поведение» стандарта C++
Пользовательские реализации функций динамического выделения и освобождения памяти должны отвечать семантическим требованиям, указанным в соответствующем пункте «Требуемое поведение» стандарта C++.
Стандарт C++ ([new.delete]) определяет определенные требуемые варианты поведения для функций динамического выделения и освобождения. При реализации функции глобального замещения или отмены назначения, которая не соответствует этим семантическим требованиям, другие функции, зависящие от требуемого поведения, могут вести себя неопределенным образом.
Например, void* operator new ( std::size_t count ) ожидается, что бросит bad_alloc исключение, если ему не удается выделить требуемый объем памяти. При внедрении функции присвоения замены, которая возвращает nullptr вместо метания функция, которая ожидает выделения памяти при сбое, может попытаться отменить привязку нулевого указателя.
Polyspace ® помечает эти реализации замены функций динамического выделения и освобождения.
Замена operator new что возвращает nullptr когда ожидаемое поведение должно вызвать bad_alloc исключение при сбое.
Замена operator new или operator delete которые прямо или косвенно приводят к сбою, если ожидаемое поведение не приводит к сбою. Polyspace также выделяет расположение броска в коде.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Библиотека поддержки языка |
| Категория: Обязательно, Автоматизировано |