gpt4 book ai didi

c - 如何确保二维数组在内存中连续分配

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:31 24 4
gpt4 key购买 nike

我正在通过 MPI 发送一个二维数组,为了使其正常工作,需要在内存中连续分配数组。

我分配如下:

int **array;
array = malloc(size1 * sizeof( *(array) );
for (int k = 0; k < size1; k++)
array[k] = malloc(size2 * sizeof(**(array));

那么我想使用:

MPI_Send(array, size1*size2, MPI_INT, target_pe, tag, MPI_COMM_WORLD);

如何确保数组是连续分配的?

目前我正在尝试这个:

for (int k = 0; k < size1; k++)
MPI_Send(array[k], size2, MPI_INT, target_pe, tag, MPI_COMM_WORLD);

这会导致稍后在程序的不相关部分出现段错误。但是,如果我将元素 1 个发送 1 个,它就可以工作。

最佳答案

How to ensure a 2D array is allocated contiguously in memory

一步分配。

示例使用支持可变长度数组的 C99 代码。这里使用了指向 VLA 的指针。

// ptr is a pointer to a 2D array
int (*ptr)[size1][size2] = malloc(sizeof *ptr);
(*ptr)[0][0] = 1; // One corner of the 2D array
(*ptr)[size-1][size-1] = 2; // Opposite corner of the 2D array

我稍后会研究示例 MPI() 代码。

关于c - 如何确保二维数组在内存中连续分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com