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

履歴 編集

function
<cstdlib>

std::aligned_alloc(C++17)

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

概要

指定したアライメントでメモリを確保する。

事前条件

  • 指定するアライメント値alignmentは、実装がサポートしている有効なアライメント値であること
    • POSIXの実装では、2の累乗、およびsizeof(void*)の倍数であること
  • サイズ値sizeは、alignmentの整数倍であること

効果

指定されたアライメントで、size分の不定値領域を確保する。

戻り値

確保した領域へのポインタを返す。

確保できなかった場合、ヌルポインタを返す。

#include <cstdlib>

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

出力

バージョン

言語

  • C++17

処理系

備考

  • Clangは、グローバル名前空間 (POSIXの実装) では、3.1で動作確認できた
  • GCCは、グローバル名前空間 (POSIXの実装) では、4.4で動作確認できた
  • Visual Studio 2019 Update 3の時点では存在が確認できない。_aligned_mallocという同等のWindows用機能が提供されているため、そちらを使う必要がある

参照