我正在学习使用C语言进行MPI编程,当其中一个进程调用MPI_Abort时,我没有设法在MPI通信器/组的所有进程中查找动态分配的内存(malloc / calloc)会发生什么
不释放动态分配的内存会导致故障/不可预测的行为?这被认为是泄漏吗?
答案 0 :(得分:4)
MPI_Abort()
类似于exit()
:
此例程可以“最好地”中止该组中的所有任务
comm
。此函数不需要调用 环境采取任何错误代码的操作。但是,一个 Unix或POSIX环境应该将其作为返回错误代码处理 来自主程序。
在中止进程有效的情况下,这些进程持有的任何动态分配的内存都会释放回操作系统。动态分配不会在进程终止后继续存在。所以,
不释放动态分配的内存会导致故障/不可预测的行为吗?
在某种程度上。
这被视为泄密吗?
malloc()
的操作不会导致calloc()
ed或MPI_Abort()
内存泄漏。内存泄漏仅在继续运行的进程的上下文中相关。