2d结构阵列:segfaultening

时间:2014-12-09 00:27:44

标签: c arrays struct malloc 2d

我从一个简单的想法开始。

我有一个结构包含我需要在

中修改的内容
typedef struct {
    int stuff;
    int things;
    unsigned long long store;
 } line;

我需要制作这些结构的二维数组,这取决于已经读入并初始化的另外两个数字。然而,当我尝试创建

line book[X][Y];

我到处乱砍。

我知道我需要使用malloc,但无论我尝试什么,我似乎都无法做到这一点!

我如何实现目标?我真的需要帮助理解malloc,这是一个外国概念。如果有人可以帮助我,这将是惊人的。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用双指针指向行,因为使用一个指针可以分配单个"数组"线条和双指针你可以分配一个"数组" "阵列"线条。

如果您有疑问,请参阅here

所以,你可以为"数组"分配内存。指向行,如。

line **book = NULL;

book = malloc(sizeof(line *) * X);

有了这个,你将拥有一个"阵列"指向行的指针,然后你必须遍历书的每个元素,使每个指针指向另一个"数组",为此,我们对书的每个元素使用malloc。

for (i = 0; i < X; i++)
    book[i] = malloc(sizeof(line) * Y);

另外,当你完成它们时,不要忘记释放指针。