繁体   English   中英

如何使用posix_memalign动态分配64B对齐的2D指针数组

[英]How to dynamically allocate 2D array of pointer that's 64B aligned using posix_memalign

我有两个数组, y_train是一维数组, x_train是二维数组。 我需要使用 posix_memalign 动态分配这两个数组。 我为y_train正确地做到了这y_train 我将int y_train[4344]转换为以下代码。

   int* Y_train;
posix_memalign((void**)(&Y_train), 64, sizeof(int) * 4344);

现在,我想转换int x_train[4344][20]; 以同样的方式,但不确定如何。

获取完整大小的内存块并将其分配给正确类型的指针:

void *ptr;
posix_memalign(&ptr, 64, sizeof(int) * 4344);
int *Y_train = ptr;
posix_memalign(&ptr, 64, sizeof(int) * 20 * 4344);
int (*x_train)[20] = ptr;

现在整个二维数组正确对齐,但只有每隔一个内部数组正确对齐,因为4344 * sizeof(int)不是64的倍数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM