创建一个单词对齐的字符向量

时间:2017-08-03 17:16:36

标签: c++ vector alignment c++03

我需要创建一个原始缓冲区数据类,它必须返回一个指向char的指针,该指针保证是字对齐的。

我在考虑使用std::vector<<something>> vec

我知道std::vector的大多数(如果不是全部)实现都会使用operator new来分配内存,保证返回最大对齐内存,但我不想依赖它。

我也不想创建自己的对齐分配器。看起来像是矫枉过正。

这就是我想出的:(假设uintptr_t保证有字大小)

typedef uintptr_t WORD_TYPE;

std::vector<WORD_TYPE> vec;

然后我用它来访问数据:

reinterpret_cast<char*>(vec.data());

我看不出这种方法有任何问题。它是否正确或是否有更好的方法来考虑列出的要求?

1 个答案:

答案 0 :(得分:1)

this SO帖子中接受的答案表明new运算符确保对齐任何对象类型。只需使用std::vector<char>即可满足您的需求;就像你说的那样,std::vector在我见过的每个实现中都使用了new,这至少意味着字对齐。