我需要将内存对齐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
} ;
感谢
答案 0 :(得分:1)
如果这是一个DLL并且您正在使用MSVC / Visual C ++进行编译,则可以显式对齐struct成员:
struct g_thread_param {
int thr_cnt ;
int indv_cnt ;
__declspec(align(4096)) char mem_buff[XX];
} ;