从地址构造C中的指针

时间:2013-03-19 07:18:15

标签: c pointers mpi

不知道为什么我不能得到这个但是......

我最初从另一个处理器获得一个指针的地址,我需要一个指向该地址项的指针。不要太担心MPI_Recv,只要知道我从其他处理器获取信息。所以我有:

MPI_Recv(&a, sizeof(int), MPI_INT, 0, 1, MPI_COMM_WORLD, &status);  

c = a;
printf("%d",c[0]);

为什么这会给我一个分段错误?我已经尝试在设置c = a之前为c分配内存,它仍然会出现故障。想法?我已经试着在网上看了很长一段时间,却找不到任何东西。提前致谢

1 个答案:

答案 0 :(得分:6)

每个流程都有自己独立的virtual address spaces。来自一个过程的指针在另一个过程的背景下毫无意义。

您有几种选择:

  1. 使用threads代替流程。
  2. 使用shared memory
  3. 发送实际数据而不仅仅是指针。
  4. 如果您的进程可以驻留在不同的计算机上,则只有最后一个选项是可行的。