Название: Как изменить размер char ***t в C (realloc) Отправлено: SCAD от Март 16, 2004, 16:27 Существует таблица строк: char *t
Название: Как изменить размер char ***t в C (realloc) Отправлено: Злой от Март 16, 2004, 17:06 Размер массива x * y * sizeof (char *), где x - количество строк, y - количество столбцов.
Название: Как изменить размер char ***t в C (realloc) Отправлено: EugeneVC от Март 16, 2004, 20:17 лучше вообще использовать vector и все STL
тормозней, зато можно забыть от всяких там realocах. Название: Как изменить размер char ***t в C (realloc) Отправлено: SCAD от Март 17, 2004, 21:23 2 Злой Спасибо большое.
2 EugeneVC Цитата: "EugeneVC" лучше вообще использовать vector и все STL тормозней, зато можно забыть от всяких там realocах. Это не верный подход к делу. Можно много чего использовать, но в данном случае это решение оптимальное. Название: Как изменить размер char ***t в C (realloc) Отправлено: EugeneVC от Март 17, 2004, 22:05 почему не оптимально?
Название: Как изменить размер char ***t в C (realloc) Отправлено: Злой от Март 17, 2004, 22:21 Код:
Выглядит довольно жутко. Думаю, SCAD имел в виду то, что при изменении размера массива указателей будет выполняться только копирование в новую область памяти самих указателей, а стороки останутся на месте. При изменении размера вектора будет выполняться копирование каждого вектора-элемента и объектов класса string. Действительно, не оптимально. std::list не дает доступа к элементу по его индексу. Можно попробовать Код:
Название: Как изменить размер char ***t в C (realloc) Отправлено: Anonymous от Март 18, 2004, 20:01 Цитата: "Злой" Размер массива x * y * sizeof (char *), где x - количество строк, y - количество столбцов. Есть как минимум две потенциальные проблемы 1. Что делать с указателями, которые появятся после увеличения памяти. В новых ячейках таблицы будет всякий хлам и можно налететь на segmentation fault при неаккуратном чтении из таблицы. 2. Поплывут индексы у строк. |