2017-03-22 58 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