c - 在 C 中分配和使用对齐的 double 组

标签 c arrays

我不是很习惯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/

相关文章:

c++ - 如何捕获 x86 上的数据对齐错误(Sparc 上的 SIGBUS)

c - 我的电脑认为 signed int 比 -1 小?

java - 如何创建一个包含未知数量对象的变量?

arrays - Delphi 中的 FDQuery (SQL) 结果到记录数组

线程中的 Java 异常 "main"java.lang.ArrayIndexOutOfBoundsException

java - Java中字节数组的内存使用

java - 如何创建一个动态扩展自身的数组?

c - 从一个缓冲区转换和复制到另一个缓冲区时堆栈粉碎

c - Linux 内核中 FPU 的使用

c - 颠倒c中的字节顺序