Re[4]: Где ошибка?
От: Аноним  
Дата: 06.02.04 09:35
Оценка:
Здравствуйте, dik o-braz, Вы писали:

DOB>
DOB>void x_string_list_add(xStringList *lst, int count, ...)
DOB>{
DOB>/* ... */        
DOB>        if (lst->al > lst->size)
DOB>        {
DOB>            int i;
DOB>            va_list par; 
            lst->>list[lst->size] = (char **)x_malloc(sizeof(char *) * count);
DOB>            va_start(par, count);
DOB>            for (i = 0; i < count; i++)
DOB>            {
                lst->>list[lst->size][i] = x_strdup(va_arg(par, char *));
DOB>            }
DOB>/* Зачем нужна вот эта строчка ?  VVV           */
            lst->>list[lst->size++][i] = NULL;
DOB>/* Возможно, ей затирается служебная инф-я хипа */
DOB>/* И в ф-ии free все падает                     */
DOB>            va_end(par);
DOB>        }
DOB>/* ... */        
DOB>}

DOB>

Именно. Я уже нашёл, но всё равно спасибо. Просто память выделяю для count элементов:
 lst->list[lst->size++][i] = NULL;
, а инициализирую count+1 элемент.
Надо писать :
lst->list[lst->size] = (char **)x_malloc(sizeof(char *) * (count+1));

Тема закрыта.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.