c - 如何动态对齐结构的变量?

标签 c caching memory-alignment

我有一个包含许多变量的结构,我需要动态对齐结构中间的一些变量。例如,我有以下结构,我想通过使用 posix_memalign 或其他方法将 x5 对齐到高速缓存行中。可能吗?

struct many_vars {
    uint32_t x1;
    uint32_t x2;

    uint64_t x3;
    uint64_t x4;

    // ... 

    uint64_t x5;
    uint64_t x6;

    // ... 

    uint64_t x7;
    uint64_t x8;

}

最佳答案

我是这么认为的。你应该能够做到这一点:

typedef struct my_struct_optional_name {
    uint32_t ui32_1;
    uint32_t ui32_2;
    char char_1;
    // compiler inserts padding unless #pragma pack is in effect
    uint64_t ui64_1;
} my_struct_t;
my_struct_t *my_struct = aligned_alloc(64, sizeof(my_struct_t));

关于c - 如何动态对齐结构的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943621/

相关文章:

java - 如何将文件传递给 JNI 以在 OpenSL ES AudioPlayer 中播放?

c - C (C99) 中嵌套函数调用的限制

c++ - Gcc 自定义运算符 new[] 和 delete[] 对对齐的类有问题 - addresssanitizer 报告缓冲区溢出

linux - 有什么办法可以停止从x86_64上的c++标准库进行不对齐的访问?

c - 在 C 中将双指针作为参数传递

python - 如何让 Python 将数组插入到 *.c 文件中?

php - doctrine 2 和 zend framework 2 如何使用缓存?

python - Suds忽略缓存设置?

caching - Azure 缓存服务 - 疯狂高错过率

"Empty classes"的 C++ 多重继承内存布局