在调用mpi init之前释放内存的最佳方法是什么?在下面给出的代码中,如果在mpi finalize之前或mpi finalize之后取消分配calloced内存。无论如何做任何一种方式都不会给出任何错误。
由于
int main (int argc, char *argv[])
{
int hostid, numprocessors;
int *trial;
trial = calloc(5,sizeof(int));
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocessors);
MPI_Comm_rank(MPI_COMM_WORLD,&hostid);
free(trial);
MPI_Finalize();
//free(trial);
return(0);
}
答案 0 :(得分:1)
将评论转移到答案中以便关闭。
如果你没有为MPI_Init()
提供内存,你可以在适合的时候释放它。在调用MPI_Finalize()
之后可能存在“嵌套对称”的论点,但你的代码应该没问题。
当然,问题中的代码不会在任何地方使用分配的内存。但是,观察结果仍然适用。只要你在使用它的最后一个代码完成之前没有释放内存,你应该没问题。
您可以使用valgrind
来验证此(...虽然我注意到valgrind
{{1}}无法与MPI程序一起使用,至少在Ubuntu环境中如此大概是相关的......)。