如何在传入结构时对齐 C++ 中的内存

how to align the memory in c++ when passing in Struct

本文关键字:C++ 对齐 内存 结构      更新时间:2023-10-16

我需要通过 4096 对齐内存,因为这是我正在使用的 dll 的要求。所以以前没问题,因为只有我曾经有

char *mem_buff = (char *)_aligned_malloc(sizeof(char)*XX, 4096);

但是现在由于我想使用结构共享内存(出于使用线程的原因),因此我被困在做什么以及如何做?

struct g_thread_param {
int thr_cnt ; 
int indv_cnt ;
char mem_buff[XX]; //what to do to aligne this to 4096
} ;

谢谢

如果这是一个 DLL,并且您正在使用 MSVC/Visual C++ 进行编译,则可以显式对齐结构成员:

struct g_thread_param {
int thr_cnt ; 
int indv_cnt ;
__declspec(align(4096)) char mem_buff[XX];
} ;