Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Здравствуйте, Ovoshlook, Вы писали:
W>>>Вот, например, если смотреть на имена, то почему у тебя j хранит длину строки в одном месте: int j=strlen(arr->substrings[i-1]);, а в другим месте — используется для определения длины массива указателей, которые ссылаются на эти строки: map.name=(char **)malloc(sizeof(char *)*j+1); ?
O>>Потому что выделяемая область памяти зависит от размера строки, который в свою очередь хранит переменная j
EP>map.name — это массив массивов, или по-другому — массив строк.
EP>Количество элементов в массиве строк, зависит от количества строк, и не зависит от размера конкретной строки (то есть не зависит от j).
map.name=(char **)malloc(sizeof(char *)*j+1);
Так я выделяю для конкретного элемента массива. То есть не для количества строк в этом массиве, а для уже конкретной строки.