Доброго всем времени суток. Набиваю свою библиотечку функций, FlatASM. В частности, для работы со строками. Предполагается, что длина строки может изменяться с течением времени произвольно. Вопрос в следующем: каким образом лучше выделять память под строки. Рассматриваю следующие варианты, поправьте, где неправ... 1. Каждую строку в отдельный heap. Плюс: собственно, получается отделение строк одной от другой. Своего рода инкапсуляция. Насколько я понимаю, шансы, что одна строка перезапишет другую, при таком методе выделения просто смехотворно минимальны (ну, т.е. надо сильно постараться). Минус: много heap'ов - много handle'ов, а есть ли это гут? К тому же на каждую строку получится 8 байт: handle heap'а и handle выделяемого блока памяти. 2. Все строки - в process heap. Плюс: 4 байта на строку (только адрес), никаких новых handle'ов. Минус: насколько возможно увеличение размеров блока без его перемещения? Пишу с замахом на совместимость со всеми 32-битными Windows, так что Low-Fragmentation Heap'ы использовать не представляется возможным. Заранее спс.
для средней строки(если это конечно не текстовый процессор) размер не превышает 64 байта (примерно, но есть и сильные исключения). Вопрос. зачем так извращаться, если достаточно контролировать длину буфера под строку? struc String{.wLength dw0\wMaxLen dw 0\lpString dd 0} что сложного не понимаю. Ограничение 64К символов, но не будете же вы хранить войну и мир одной строкой.
Но вопрос остаётся... Если память под строки выделять динамически - какой хип для этого подойдёт лучше?
ну есть HeapRealloc(). что лучше в плане быстродействия? однозначно, второй вариант. Что удобнее использовать? аналогично. Не вижу не одного плюса в первом варианте.