C++ 3d.Комментарии

Исключения и оператор new


При некотором использовании этого синтаксиса выделенная память затем освобождается, при некотором -- нет.

Т.к. приведенные в книге объяснения немного туманны, вот соответствующая часть стандарта:

5.3.4. New [expr.new]

Если инициализация объекта завершается из-за возбуждения исключения и может быть найдена подходящая функция освобождения памяти, она вызывается для освобождения выделенной для размещения объекта памяти, а само исключение передается окружающему контексту. Если подходящая функция освобождения не может быть однозначно определена, освобождение выделенной памяти не производится (это удобно, когда функция выделения памяти на самом деле память не выделяет; если же память была выделена, то, вероятно, произойдет утечка памяти).



Содержание раздела