分配 6xNxN 数组

2023-12-20

我有一个变量N。我需要一个6xNxN array.

像这样的事情:

int arr[6][N][N];

但显然,这是行不通的。

我不确定如何分配它以便我可以访问,例如arr[5][4][4] if N是 5,并且arr[5][23][23] if N is 24.

注意N永远不会改变,所以我永远不必改变reallocate arr.

我应该怎么办?将要int ***arr = malloc(6 * N * N * sizeof(int)); work?


您可以在堆上将 3 维数组分配为

int (*arr)[N][N] = malloc(sizeof(int[6][N][N]));

使用后,您可以免费作为

free(arr);

另一种与 @StoryTeller 建议相同的写作方式是 -

int (*arr)[N][N] = malloc(6u * sizeof(*arr));

但这里你需要小心u after 6以防止有符号算术溢出。

此外,平台上仍然可能存在问题size_t宽度较小int正如 @chqrlie 所建议的,但在“最”常用的平台上情况并非如此,因此您可以很好地使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分配 6xNxN 数组 的相关文章