Объекты, которые не переживают функцию, должны иметь длительность автоматического хранения
Объекты, которые не переживают функцию, должны иметь длительность автоматического хранения.
Динамически выделенный объект приводит к дополнительным ассигнованиям, и освобождение стоит и делает вашу программу уязвимой для утечек памяти, если, например, программа возвращается из-за броска исключения перед операцией освобождения.
Вместо этого используйте объект с длительностью автоматического хранения, которая имеет время жизни, которое связано с осциллографом включения того объекта. Объект автоматически уничтожается, когда тот осциллограф выходит.
Правило позволяет исключение для локальных объектов, которые динамически выделяются, чтобы оптимизировать использование стековой памяти, потому что объекты используют большой объем памяти и могут в противном случае вызвать переполнение стека.
Polyspace® объекты флагов, которые создаются в функциональном осциллографе и которые не имеют длительности автоматического хранения, когда любое следующее верно:
Объект является интеллектуальным указателем (std::shared_ptr
или std::unique_ptr
) это никогда не копируется, перемещается, повторно присваивается, сбрасывается или передается вызываемому.
Объект не отмечается, если это - немассив и во время компиляции, его размер больше 4 Кбайт, или его размер неизвестен.
Объект динамически выделяется при помощи операторов new
или new[]
и затем освобожденный через все возможные пути в функции.
Объект не отмечается, если это - немассив и во время компиляции, его размер больше 4 Кбайт, или его размер неизвестен.
Объект является классом обертки, который содержит по крайней мере один элемент данных с фиксированным размером, больше, чем 16 Кбайт.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: вспомогательная библиотека Языка |
Категория: Необходимый, Частично автоматизированный |