nixp.ru v3.0

29 мая 2017,
понедельник,
16:13:39 MSK

DevOps с компанией «Флант»
anonymous написал 27 апреля 2006 года в 15:34 (322 просмотра) Ведет себя неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.

Есть такой кусочек кода, вызывается след. образом: xstr_init(&arr, 10, 255);, где char** arr. GDB показывает, что SEGFAULT происходит в строке №30.

подскажите пожалуйста, где здесь ошибка выделения памяти, и как ее корректно исправить? спасибо.

22 void xstr_init(char*** arr, int nmemb, int slen)
     23 {
     24         *arr = (char **)calloc(nmemb, sizeof(char *));
     25         if( *arr == NULL )
     26                 merror("%s(): NULL\n", __func__);
     27
     28         int i;
     29         for(i = 0; i < nmemb; i++){
     30                 *arr[i] = (char *)calloc(slen, sizeof(char));
     31                 if( *arr[i] == NULL )
     32                         merror("%s(): NULL arr[%d]\n", __func__, i);
     33         }
     34
     35
     36 }
iliya

Замени

*arr[i]


на

(*arr)[i].
anonymous
iliya
Замени

*arr[i]

на

(*arr)[i].

спасибо большое. забыл про приоритетность операторов :/