nlib
nn::nlib::DynamicAlignedStorage クラスfinal

アラインされたメモリを得るためのクラスです。 [詳解]

#include "nn/nlib/DynamicAlignedStorage.h"

公開メンバ関数

errno_t Init (size_t size, size_t align) noexcept
 メモリの割り当てを行います。 [詳解]
 
void * Get () noexcept
 割り当てられた領域へのポインタを返します。 [詳解]
 
基本的なメンバ関数
constexpr DynamicAlignedStorage () noexcept
 デフォルトコンストラクタです。
 
 DynamicAlignedStorage (DynamicAlignedStorage &&rhs) noexcept
 ムーブコンストラクタです。C++11の利用時に有効です。
 
DynamicAlignedStorageoperator= (DynamicAlignedStorage &&rhs) noexcept
 ムーブ代入演算子です。C++11の利用時に有効です。
 
 DynamicAlignedStorage (DynamicAlignedStorage &rhs, move_tag) noexcept
 ムーブコンストラクタに相当します。
 
DynamicAlignedStorageassign (DynamicAlignedStorage &rhs, move_tag) noexcept
 ムーブ代入演算子に相当します。
 
void swap (DynamicAlignedStorage &rhs) noexcept
 オブジェクトをスワップします。 [詳解]
 
 ~DynamicAlignedStorage () noexcept
 デストラクタです。
 

詳解

アラインされたメモリを得るためのクラスです。

説明
std::aligned_storagealignasを使えばアライメントを指定できますが、大きなアライメントに対応しているかどうかは環境に依存しています。 大きなアライメントのメモリを利用したい場合は動的にメモリを確保するようにする必要があります。 Windows以外ではnlib_memalign()をラップし、Windowsでは_aligned_malloc()をラップして実装されています。
コード例
e = storage.Init(64 * 1024, 64); // 64 kbytes, 64 bytes aligned
if (nlib_is_error(e)) {
// ERROR
}
void* ptr = storage.Get(); // ptr is what you want

DynamicAlignedStorage.h24 行目に定義があります。

関数詳解

◆ Get()

nn::nlib::DynamicAlignedStorage::Get ( )
inlinenoexcept

割り当てられた領域へのポインタを返します。

戻り値
割り当てられた領域へのポインタ

DynamicAlignedStorage.h84 行目に定義があります。

◆ Init()

nn::nlib::DynamicAlignedStorage::Init ( size_t  size,
size_t  align 
)
inlinenoexcept

メモリの割り当てを行います。

引数
[in]size割り当てる領域のサイズ
[in]align割り当てる領域のアライメント
戻り値
0成功した場合
EINVALアライメントが2のべき乗ではなかった場合
ENOMEMメモリの確保に失敗した場合

DynamicAlignedStorage.h60 行目に定義があります。

◆ swap()

nn::nlib::DynamicAlignedStorage::swap ( DynamicAlignedStorage rhs)
inlinenoexcept

オブジェクトをスワップします。

非推奨:
この関数は将来のリリースにおいて削除されます。

DynamicAlignedStorage.h55 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: