1

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

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

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

为什么这会给我一个分段错误?在设置 c = a 之前,我也尝试为 c 分配内存,它仍然会出现段错误。

4

1 回答 1

6

每个进程都有自己独立的虚拟地址空间。来自一个进程的指针在另一个进程的上下文中是没有意义的。

你有几个选择:

  1. 使用线程而不是进程。
  2. 使用共享内存
  3. 发送实际数据而不仅仅是一个指针。

如果您的进程可以驻留在不同的计算机上,则只有最后一个选项是可行的。

于 2013-03-19T07:19:38.160 回答