Строки: где и как?

Тема в разделе "WASM.BEGINNERS", создана пользователем Virtual8086, 23 окт 2009.

  1. Virtual8086

    Virtual8086 Дмитрий

    Публикаций:
    0
    Регистрация:
    23 окт 2009
    Сообщения:
    9
    Адрес:
    Беларусь
    Доброго всем времени суток.

    Набиваю свою библиотечку функций, FlatASM. В частности, для работы со строками. Предполагается, что длина строки может изменяться с течением времени произвольно. Вопрос в следующем: каким образом лучше выделять память под строки.

    Рассматриваю следующие варианты, поправьте, где неправ...

    1. Каждую строку в отдельный heap. Плюс: собственно, получается отделение строк одной от другой. Своего рода инкапсуляция. Насколько я понимаю, шансы, что одна строка перезапишет другую, при таком методе выделения просто смехотворно минимальны (ну, т.е. надо сильно постараться). Минус: много heap'ов - много handle'ов, а есть ли это гут? К тому же на каждую строку получится 8 байт: handle heap'а и handle выделяемого блока памяти.
    2. Все строки - в process heap. Плюс: 4 байта на строку (только адрес), никаких новых handle'ов. Минус: насколько возможно увеличение размеров блока без его перемещения?

    Пишу с замахом на совместимость со всеми 32-битными Windows, так что Low-Fragmentation Heap'ы использовать не представляется возможным.

    Заранее спс.
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    для средней строки(если это конечно не текстовый процессор) размер не превышает 64 байта (примерно, но есть и сильные исключения). Вопрос. зачем так извращаться, если достаточно контролировать длину буфера под строку?
    struc String{.wLength dw0\wMaxLen dw 0\lpString dd 0}
    что сложного не понимаю. Ограничение 64К символов, но не будете же вы хранить войну и мир одной строкой.
     
  3. Virtual8086

    Virtual8086 Дмитрий

    Публикаций:
    0
    Регистрация:
    23 окт 2009
    Сообщения:
    9
    Адрес:
    Беларусь
    Но вопрос остаётся... Если память под строки выделять динамически - какой хип для этого подойдёт лучше?
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну есть HeapRealloc(). что лучше в плане быстродействия? однозначно, второй вариант.
    Что удобнее использовать? аналогично.
    Не вижу не одного плюса в первом варианте.
     
  5. Virtual8086

    Virtual8086 Дмитрий

    Публикаций:
    0
    Регистрация:
    23 окт 2009
    Сообщения:
    9
    Адрес:
    Беларусь
    Спс за ответы. Если ещё будут мысли - рад буду прочитать, но в целом вопрос прикрыт.