我不是很习惯C,我想做的事情似乎有点 复杂。
我想创建两个或多个 double 组 4096 字节对齐。这是我尝试过的 我得到的各种回应:
double *pp[2];
// Here gcc warns about "cast to pointer from integer of different size"
pp[0]=(double *)aligned_alloc(4096, 10*4096*sizeof(double) );
*(pp[0]+1) = 55.55; // This compiles but segfaults
// or
*pp[0][1] = 55.55; // This gives compilation error.
有没有人对正确执行此操作有任何建议?
谢谢。
PS:有没有办法在 fortran 中做同样的事情?
最佳答案
添加必要的标题:
#include <stdlib.h>
那么,第一个数组的用法应该是:
double *pp[2];
pp[0] = aligned_alloc(...);
pp[0][0] = 55.55;
pp[0][1] = 100;
请记住 a[0]
与 *(a + 0)
相同,您不需要星号和括号。
关于c - 在 C 中分配和使用对齐的 double 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40172424/