この API で raw メモリを管理する小さなクラスが必要です
template<class allocator = std::allocator<char> >
class raw_memory
{
static_assert(std::is_same<char, typename allocator::value_type>::value,
"raw_memory: allocator must deal in char");
public:
raw_memory() = default;
raw_memory(raw_memory&&) = default;
raw_memory&operator=(raw_memory&&) = default;
explicit raw_memory(size_t, allocator const& = allocator());
~raw_memory(); // deletes any memory
char*get(); // returns pter to (begin of) memory
void resize(size_t); // re-allocates if necessary, may delete old data
size_t size() const; // returns number of bytes currently hold
raw_memory(raw_memory const&) = delete;
raw_memory&operator=(raw_memory const&) = delete;
raw_memory(raw_memory&) = delete;
raw_memory&operator=(raw_memory&) = delete;
};
テンプレート パラメーターallocator
を使用すると、さまざまなメモリ アライメント オプションを使用できます。
std::unique_ptr<char, Deleter>
をメンバー (またはベース) として使用することを考えていました (さらに、size_t
バイト数を保持する )。デリーターとして何を使用しますか? または、それをすべて達成するためのより良い方法はありますか?