void alloc_matrix(void ***a, int m, int n, int size) {
int i;
void *storage;
storage = (void *)malloc(m * n * size);
*a = (void **)malloc(m * sizeof(void *));
for (i = 0; i < m; i++) {
//(*a)[i] = (float *)storage + i * n * size; // VS
(*a)[i] = storage + i * n * size; // 服务器环境
}
}
-
在visual studio 的mpi环境下声明这个二维数组,storage 需要转换为 float 指针后才可以编译通过,在ubuntu服务器的mpi环境下,用了这个float指针转换反而可能会出错。
-
我不止传了float指针,还传了int指针进来,想构造一个int二维数组,结果程序运行到第四个循环时突然报段错误,最后发现根本不是这里的错,把(float *)去掉就行了。