Они, вероятно, относятся к функциям необработанного выделения памяти operator new
и operator delete
.
Когда вы вызываете конкретную версию размещения new-expression (то есть new-expression с дополнительными параметрами; все они официально называются размещение форм new
) и функцией выделения памяти operator new
успешно, но процесс завершается неудачей позже по какой-то другой причине (конструктор сбрасывает), реализация должна прервать процесс и автоматически освободить выделенную память, вызвав соответствующую версию operator delete
. «Соответствующая версия» operator delete
в данном случае - это версия, имеющая тот же набор параметров, что и функция operator new
, ранее использовавшаяся для выделения памяти (конечно, за исключением самого первого параметра).
Это относится и к nothrow
версии operator new
. Когда вы используете nothrow
форму выражения new, он вызывает nothrow
версию operator new
, а затем создает объект в выделенной памяти. Если конструктор дает сбой (throws), реализация new-expression освобождает выделенную память с помощью nothrow
версии operator delete
. По сути, это единственная причина существования этой версии operator delete
.
Другими словами, nothrow
версия operator delete
существует для очень специфических внутренних целей. Вы не должны обычно хотеть называть это самостоятельно, и, возможно, вам действительно не нужно знать о его существовании. Однако стоит знать, что по причинам, описанным выше, всякий раз, когда вы создаете свою собственную версию operator new
с дополнительными параметрами, всегда полезно предоставить подходящую версию operator delete
с тем же набором дополнительных параметров.