void deallocate(pointer p, size_type n); // C++17 まで
constexpr void deallocate(pointer p, size_type n); // C++20 から
概要
メモリを解放する。
事前条件
- C++20まで
pは、allocate()によって確保されたポインタ値であること。nは、アロケートされたpのサイズと同じであること
- C++23以降
pがallocate_at_least()によって確保されたポインタ値である場合、allocate_at_least()の戻り値をret、その呼び出しで要求されたサイズをreqとして、pはret.ptrと等しいことnはreq <= n <= ret.countとなる値であること
- そうでなければ、
pは、allocate()によって確保されたポインタ値であること。nは、アロケートされたpのサイズと同じであること
効果
pが指すストレージを解放する。
- C++11まで : 解放には
::operator delete(void*)を使用するが、この関数がいつ呼び出されるかは未規定。 - C++14から : 解放には
::operator delete(void*, std::size_t)を使用するが、この関数がいつ呼び出されるかは未規定。
例
#include <memory>
int main()
{
std::allocator<int> alloc;
// 10要素のint領域を確保する
std::size_t n = 10;
int* p = alloc.allocate(n);
// 確保したメモリを解放する
alloc.deallocate(p, n);
}
出力