最終更新日時(UTC):
が更新

履歴 編集

function
<cstdlib>

std::free_aligned_sized(C++26)

namespace std {
  void free_aligned_sized(void* ptr, size_t alignment, size_t size);
}

概要

アライメントと確保時のサイズを指定して、確保したメモリを解放する。

C23で<stdlib.h>に追加された関数であり、C++26で<cstdlib>に取り込まれた。

事前条件

  • ptrがヌルポインタであるか、もしくはaligned_alloc()が返したポインタであること
  • ptrがヌルポインタでない場合、alignmentはそのメモリの確保時に指定したアライメントと等しく、sizeは確保時に要求したサイズと等しいこと

効果

  • ptrがヌルポインタの場合、なにもしない
  • そうでない場合、free()(ptr)と等価である

戻り値

なし

備考

  • この関数はスレッドセーフである
  • アライメントと確保時のサイズを処理系に渡せるため、free()よりも効率的に解放できる可能性がある

#include <cstdlib>

int main()
{
  // 64バイトアライメントで、256バイトの領域を確保する
  void* p = std::aligned_alloc(64, 256);
  std::free_aligned_sized(p, 64, 256);
}

出力

バージョン

言語

  • C++26

処理系

関連項目

  • free(): 確保したメモリを解放する
  • free_sized(): 確保時のサイズを指定して、確保したメモリを解放する
  • aligned_alloc(): 指定したアライメントでメモリを確保する

参照