Segfault when trying to index pointer to pointers in function

后端 未结 2 1744
礼貌的吻别
礼貌的吻别 2021-01-28 17:54

I\'m trying to do something with an array (malloc-ed), namely arr of a custom struct. The array is passed by reference to a function. I get a segfault whenever I tr

2条回答
  •  被撕碎了的回忆
    2021-01-28 18:50

    Your problem is the line

    (*arr[1])->i = 3;
    

    Because the subscripting operator's evaluation precedes the dereferencing's evaluation it is equivalent to the following:

    (*(arr[1]))->i = 3;
    

    This is obviously wrong. You need

    (*arr)[1]->i = 3;
    

    therefore.


    Notes:

    • do not cast the result of malloc
    • add #include to resolve the warning
    • adding an extra level of indirection (foo*** pointing to foo**) is unnecessary; just copy by value
    • (in addition to the upper note) a good old 1D array should actually be sufficient in your case

    • call free after malloc

提交回复
热议问题