[英]Align C++ array of structs on 64-bit boundaries?
我有一個 64 位結構數組,我想在 64 位邊界上對齊:
struct AStruct
{
int x;
int y;
};
std::array<AStruct, 1000> array; // I'd like to align this on 64-bit boundary
我知道屬性是__attribute__((__aligned__(64))
但我不確定是否需要對齊每個單獨的結構、整個數組或為兩者指定屬性?
編譯器為 Clang
我知道屬性是
__attribute__((__aligned__(64))
那是語言擴展。 沒有必要使用它,因為有一個標准關鍵字來指定 alignment: alignas
。 將數組對齊到 64 位的示例:
alignas(64 / CHAR_BIT) std::array<AStruct, 1000> array;
我不確定是否需要對齊每個單獨的結構、整個數組或為兩者指定屬性?
兩者都沒有必要。
就對齊陣列而言,兩者都有效。 如果您希望 class 的所有實例(包括此數組之外的其他實例)對齊,則為 class 指定它。 如果您只想對齊此數組,請為變量指定它。
我有一個 64 位結構數組
請注意,雖然您的 class 在某些系統上可能是 64 位,但並非在所有系統上都是 64 位。 它的范圍可以從 32 位(16 位int
)到 128 位(64 位int
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.