[new.delete.general]

# 17 Language support library [[support]](./#support)

## 17.6 Dynamic memory management [[support.dynamic]](support.dynamic#new.delete.general)

### 17.6.3 Storage allocation and deallocation [[new.delete]](new.delete#general)

#### 17.6.3.1 General [new.delete.general]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L2403)

Except where otherwise specified, the provisions of [[basic.stc.dynamic]](basic.stc.dynamic "6.8.6.5 Dynamic storage duration") apply to the library versions of operator new and operatordelete[.](#1.sentence-1)

If the value of an alignment argument
passed to any of these functions
is not a valid alignment value,
the behavior is undefined[.](#1.sentence-2)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L2412)

On freestanding implementations,
it is implementation-defined
whether the default versions of the replaceable global allocation functions
satisfy the required behaviors
described in [[new.delete.single]](new.delete.single "17.6.3.2 Single-object forms") and [[new.delete.array]](new.delete.array "17.6.3.3 Array forms")[.](#2.sentence-1)

[*Note [1](#note-1)*:

A freestanding implementation's default versions of
the replaceable global allocation functions
can cause undefined behavior when invoked[.](#2.sentence-2)

During constant evaluation,
the behaviors of those default versions are irrelevant,
as those calls are omitted ([[expr.new]](expr.new "7.6.2.8 New"))[.](#2.sentence-3)

â *end note*]

*Recommended practice*: If any of the default versions of the replaceable global allocation functions
meet the requirements of a hosted implementation, they all should[.](#2.sentence-4)
