传入Struct时如何在c ++中对齐内存

时间:2013-12-24 06:52:24

标签: c++ memory-alignment

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

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

但现在因为我想使用struct共享内存(因为使用线程)因此我不知道该怎么办?

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

感谢

1 个答案:

答案 0 :(得分:1)

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

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