创建单词对齐的字符向量
Creating a word aligned char vector
我需要创建一个原始缓冲区数据类,它必须返回一个指向保证单词对齐的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
,这意味着至少单词对齐。
相关文章:
- 将字符向量复制到另一个向量
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将整数向量值插入字符向量
- 如何使用istream_iterator将无符号字符向量转换为字符串?
- 将字符向量转换为单个字符串
- 在C++中将字符向量转换为字符串向量
- 创建单词对齐的字符向量
- R data.table 和 STRING_ELT() 错误:如何修复"字符向量"与"字符"错误?
- 如何对字符向量执行大整数乘法
- std::逐字节复制字符向量
- 无法打印字符向量C++向量
- 我可以搜索字符向量的向量以找到特定的字符并获得其坐标
- 常量字符* 向量的新值没有得到 push_back()
- 如何将布尔向量转换为字符向量
- 如何组合字符向量的二进制第 n 位
- 如何使用SIMD比较两个字符向量并将结果存储为浮点值
- 计算字符向量中单词的出现次数
- 将字符向量转换为整数
- 将元素从字符向量复制到字符串向量
- 读取文件并将其写入字符向量时出现分段错误