为什么指针用于访问共享内存?

时间:2012-05-24 12:51:42

标签: c parallel-processing

我已经看到很多并行编程代码,比如找到最大数组,矩阵乘法等,使用指针。我不明白为什么使用它。例如:(shseg+(offset*sizeof(float))) = sum;

矩阵乘法的代码:

shseg = shmat(handle,NULL,0);
for(row=SIZE/2;row<SIZE;row++){

  for(column=0;column<SIZE;column++){
    sum = 0;

    for(tindex=0;tindex<SIZE;tindex++){ 
      sum+=a[row][tindex]*b[tindex][column];
    }

    *(shseg+(offset*sizeof(float))) = sum;
    offset++;
  }
}

任何人都可以解释为什么使用指针吗?

2 个答案:

答案 0 :(得分:1)

这是因为您展示的示例使用共享内存API,它为您提供了一大块内存,而不是一个浮点数组。因此,您需要手动执行所有指针操作。

您还可以将共享指针转换为float*并使用索引,如下所示:

shseg = shmat(handle,NULL,0);
float *fshseg = (float*)shseg;

...

fshseg[index++] = sum;

答案 1 :(得分:0)

好吧,你有一个已分配的内存空间与你的程序共享,你将一直通过内存,如果你没有使用指针你将无法获得内存地址值,这就是你需要使用它的原因。