• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <cstdlib>

    std::aligned_alloc

    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用機能が提供されているため、そちらを使う必要がある

    参照