The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Разбор строки и передача результа массиву указателей"
Отправлено BsDr, 28-Июн-06 15:09 
>>>array_lines = calloc(lin_count, 1000*sizeof(char*));
>>Здесь под массив выделяется lin_count количество элементов размером 1000 указателей на char!
>
>Это да. Следовало сделать
>
>array_lines = calloc(lin_count, 1000*sizeof(char));
>
>Хотя проблема не в этом, так как sizeof(char*) сильно больше sizeof(char).
>
>
>>Отсюда "Segmentation failed"!
>
>А вот здесь:
>
>>> char **array_lines;
>
>Нужно заменить на
>
>char *array_lines[1000];
>
>Разумеется в реальной программе нужно сделать
>#define MAX_ROW_LENGTH 1000
>
>и пользоваться им.
>
>
>>А в цикле выделить память под строку:
>>array_lines[i] = calloc(1000, sizeof(char));
>
>Задача была избавиться от calloc в цикле. Во-первых долго, во-вторых освобождать тоже
>придётся в цикле.

Конструкции
char *array_lines[1000];
и
char **array_lines;
array_lines = calloc(1000, sizeof(*char));
Идентичны!

Если сделать:

char *array_lines[1000];
array_lines = calloc(lin_count, 1000*sizeof(char));

то под первый элемент из array_lines веделится lin_count элементов размером 1000*sizeof(char), т.е. array_lines будет состоять из одной строки(в ней будет lin_count букв и под каждую букву выделено 1000*sizeof(char) байт), а не из lin_count строк!

Если я не прав поправте!

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру