Skip to content

Latest commit

 

History

History
70 lines (52 loc) · 2.16 KB

aligned_alloc.md

File metadata and controls

70 lines (52 loc) · 2.16 KB

aligned_alloc

  • cstdlib[meta header]
  • std[meta namespace]
  • function[meta id-type]
  • cpp17[meta cpp]
namespace std {
  void* aligned_alloc(size_t alignment, size_t size);
}
  • size_t[link /reference/cstddef/size_t.md]

概要

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

事前条件

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

効果

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

戻り値

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

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

#include <cstdlib>

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

出力

バージョン

言語

  • C++17

処理系

備考

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

参照