0

我在英特尔 Ubuntu 系统上使用 OpenMPI 和英特尔 C++ 编译器。每当我尝试分别用和调用替换和new[]调用delete[]时,我总是会遇到分段错误。MPI_Alloc_memMPI_Free_mem

MPI_Alloc_mem调用MPI_SUCCESS返回。分段错误发生在对 的调用上MPI_Free_memMPI_Alloc_mem电话与MPI_INFO_NULL. 我分别在和中显式地对void**void*参数进行了类型转换。MPI_Alloc_memMPI_Free_mem

我不知道为什么会这样。我会很感激任何建议。

4

1 回答 1

0

首先,除非您打算使用 MPI-2 单向通信,否则绝对没有必要将 C++ 内存管理运算符替换为 MPI 调用。

二、MPI_ALLOC_MEMandMPI_FREE_MEM在C/C++中的正确​​用法如下:

int *arr;

MPI_Alloc_mem(sizeof(int)*1000, MPI_INFO_NULL, &arr); // <-- here arr by address
...
MPI_Free_mem(arr);                                    // <-- here arr by value
于 2013-03-01T12:37:18.637 回答