免费内存malloc MPI

时间:2015-04-07 00:36:23

标签: c mpi calloc

在调用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);
}

1 个答案:

答案 0 :(得分:1)

将评论转移到答案中以便关闭。

如果你没有为MPI_Init()提供内存,你可以在适合的时候释放它。在调用MPI_Finalize()之后可能存在“嵌套对称”的论点,但你的代码应该没问题。

当然,问题中的代码不会在任何地方使用分配的内存。但是,观察结果仍然适用。只要你在使用它的最后一个代码完成之前没有释放内存,你应该没问题。

您可以使用valgrind来验证此(...虽然我注意到valgrind {{1}}无法与MPI程序一起使用,至少在Ubuntu环境中如此大概是相关的......)