首页 > 解决方案 > 如何对齐为 std::vector 分配的内存?

问题描述

在下面显示的代码中,我想将缓冲区对齐到 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 字节边界?

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

解决方案


推荐阅读