【发布时间】:2014-12-05 10:11:12
【问题描述】:
我有一个这样的 3D 数组
char **arr[1];
我是这样动态分配的:
*arr = calloc(10, sizeof(char*)); // Will be using 0-9
for(i = 0; i < 10; i ++)
*arr[i] = malloc(3); // will be using 0-2
它崩溃了。即使,我无法为您提供我在其中读/写该数组的整个库,但问题的答案分配正确,将帮助我调试并抛出分配错误或不可能的可能性。
【问题讨论】:
-
arr在我看来就像一个完美的 一维 数组。如果你想要 9x3 个字符,也许你想要char arr[9][3]? -
一维数组的二维指针数组?除此之外......我不能像预期的那样威胁它。不,我实际上想要为每个元素添加一个 char 项。
-
不,只是一个一维数组(指针)。数组与指针不同。
-
好吧,这就是问题所在,我该如何正确地做到这一点。因为我对
char ***arr进行了正确分配,但导致了奇怪的泄漏。 -
只需再添加一个 [] 即可。 2D 数组的规则也递归地应用于 3D、4D、5D 等。这里的主要问题是您混淆了多维数组的基于指针到指针的查找表,这似乎是一个常见的误解。