【发布时间】:2012-03-26 17:47:41
【问题描述】:
我遇到了一个新的小问题;
我有一个小指针叫做:
int *a;
现在..在我的主要方法中的某个地方,我使用以下几行为其分配了一些空间并分配了一个值:
a = (int *) malloc(sizeof(int));
*a=5;
..然后我尝试传输它(比如流程 1):
MPI_Bsend(a, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
另一方面,如果我尝试接收该指针
int *b;
MPI_Recv(b, 1, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
printf("This is what I received: %d \n", *b);
我收到关于缓冲区的错误!
但是,如果我不声明“b”指针,而是执行以下操作:
int b;
MPI_Recv(&b, 1, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
printf("This is what I received: %d \n", b);
...一切似乎都很好!有人可以帮我弄清楚发生了什么以及如何只使用指针吗?
提前致谢!
【问题讨论】:
标签: mpi