创建单词对齐的字符向量

Creating a word aligned char vector

本文关键字:字符 向量 对齐 单词 创建      更新时间:2023-10-16

我需要创建一个原始缓冲区数据类,它必须返回一个指向保证单词对齐的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());

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

此 SO 帖子中接受的答案指出,new运算符确实保证任何对象类型的对齐。只需使用std::vector<char>应该适合您的需求;就像你说的,std::vector在我见过的每个实现中使用new,这意味着至少单词对齐。