MPI_Abort和动态分配的内存

时间:2017-03-22 18:11:23

标签: c mpi dynamic-memory-allocation

我正在学习使用C语言进行MPI编程,当其中一个进程调用MPI_Abort时,我没有设法在MPI通信器/组的所有进程中查找动态分配的内存(malloc / calloc)会发生什么

不释放动态分配的内存会导致故障/不可预测的行为?这被认为是泄漏吗?

1 个答案:

答案 0 :(得分:4)

MPI_Abort()类似于exit()

  

此例程可以“最好地”中止该组中的所有任务   comm。此函数不需要调用   环境采取任何错误代码的操作。但是,一个   Unix或POSIX环境应该将其作为返回错误代码处理   来自主程序。

MPI 3.1 specification

在中止进程有效的情况下,这些进程持有的任何动态分配的内存都会释放回操作系统。动态分配不会在进程终止后继续存在。所以,

  

不释放动态分配的内存会导致故障/不可预测的行为吗?

在某种程度上。

  

这被视为泄密吗?

malloc()的操作不会导致calloc() ed或MPI_Abort()内存泄漏。内存泄漏仅在继续运行的进程的上下文中相关。