[new.delete.placement]

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

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

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

#### 17.6.3.4 Non-allocating forms [new.delete.placement]

[1](#1)

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

These functions are reserved; a C++ program may not define functions that displace
the versions in the C++ standard library ([[constraints]](constraints "16.4.5 Constraints on programs"))[.](#1.sentence-1)

The provisions of [[basic.stc.dynamic]](basic.stc.dynamic "6.8.6.5 Dynamic storage duration") do not apply to these reserved
placement forms of operator new and operator delete[.](#1.sentence-2)

[ð](#lib:new,operator)

`constexpr void* operator new(std::size_t size, void* ptr) noexcept;
`

[2](#2)

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

*Returns*: ptr[.](#2.sentence-1)

[3](#3)

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

*Remarks*: Intentionally performs no other action[.](#3.sentence-1)

[4](#4)

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

[*Example [1](#example-1)*:

This can be useful for constructing an object at a known address:void* place = operator new(sizeof(Something));
Something* p = new (place) Something();

â *end example*]

[ð](#lib:new,operator_)

`constexpr void* operator new[](std::size_t size, void* ptr) noexcept;
`

[5](#5)

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

*Returns*: ptr[.](#5.sentence-1)

[6](#6)

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

*Remarks*: Intentionally performs no other action[.](#6.sentence-1)

[ð](#lib:delete,operator)

`void operator delete(void* ptr, void*) noexcept;
`

[7](#7)

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

*Effects*: Intentionally performs no action[.](#7.sentence-1)

[8](#8)

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

*Remarks*: Default function called when any part of the initialization in a
placement [*new-expression*](expr.new#nt:new-expression "7.6.2.8 New [expr.new]") that invokes the library's
non-array placement operator new
terminates by throwing an exception ([[expr.new]](expr.new "7.6.2.8 New"))[.](#8.sentence-1)

[ð](#lib:delete,operator_)

`void operator delete[](void* ptr, void*) noexcept;
`

[9](#9)

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

*Effects*: Intentionally performs no action[.](#9.sentence-1)

[10](#10)

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

*Remarks*: Default function called when any part of the initialization in a
placement [*new-expression*](expr.new#nt:new-expression "7.6.2.8 New [expr.new]") that invokes the library's
array placement operator new
terminates by throwing an exception ([[expr.new]](expr.new "7.6.2.8 New"))[.](#10.sentence-1)
