如何对齐分配给std :: vector的内存?

时间:2019-03-17 19:47:18

标签: c++ c++11 c++14 c++17

在下面的代码中,我想将缓冲区对齐到64字节边界

#include <vector>
#include <iostream>

int main()
{
    using Buffer    = alignas(64) std::vector<char>;

    Buffer buffer;

    buffer.push_back('a');
    buffer.push_back('b');
    buffer.push_back('c');

    for (auto& i : buffer)
        std::cout << i << "\n";
}

我编译代码时,收到以下警告。

warning: ignoring attributes applied to class type ‘std::vector<char>’ outside of definition [-Wattributes]
     using Buffer    = alignas(64) std::vector<char>;
                                        ^~~~~~~~~~~~

我在这里做错了什么?如何定义与64字节边界对齐的向量?

编辑:我想对齐向量拥有的基础数据。使用std :: vector时是否可以将其与64字节边界对齐?

0 个答案:

没有答案