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

履歴 編集

function
<cstdlib>

std::free_sized(C++26)

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

概要

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

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

事前条件

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

効果

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

戻り値

なし

備考

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

#include <cstdlib>

int main()
{
  int* p = static_cast<int*>(std::malloc(10 * sizeof(int)));
  std::free_sized(p, 10 * sizeof(int));
}

出力

バージョン

言語

  • C++26

処理系

関連項目

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

参照