2017-03-22 105 views
1

我正在学习使用C语言编写MPI程序,并且我无法找到在MPI通信器/组的所有进程中动态分配内存(malloc/calloc)会发生什么情况进程调用MPI_Abort。MPI_Abort和动态分配的内存

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

回答

4

MPI_Abort()类似于exit()

这个程序使“最佳尝试”中止所有任务组的英寸此功能不要求调用 环境对错误代码采取任何操作。但是,Unix或POSIX环境应该将其作为来自主程序的返回错误代码 来处理。

MPI 3.1 specification

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

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

在某种程度上。

这是否被认为是泄漏?

没有malloc() ED或从MPI_Abort()运作而产生calloc() ED存储器的泄漏。内存泄漏只在持续运行的进程环境中才有意义。

+0

我选择删除,感谢您的选择:)您的答案更准确地解决了问题。 – ryyker