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

Discussion in 'WASM.BEGINNERS' started by Virtual8086, Oct 23, 2009.

  1. Virtual8086

    Virtual8086 Дмитрий

    Blog Posts:
    0
    Joined:
    Oct 23, 2009
    Messages:
    9
    Location:
    Беларусь
    Доброго всем времени суток.

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

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

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

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

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

    max7C4 New Member

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

    Virtual8086 Дмитрий

    Blog Posts:
    0
    Joined:
    Oct 23, 2009
    Messages:
    9
    Location:
    Беларусь
    Но вопрос остаётся... Если память под строки выделять динамически - какой хип для этого подойдёт лучше?
     
  4. n0name

    n0name New Member

    Blog Posts:
    0
    Joined:
    Jun 5, 2004
    Messages:
    4,336
    Location:
    Russia
    ну есть HeapRealloc(). что лучше в плане быстродействия? однозначно, второй вариант.
    Что удобнее использовать? аналогично.
    Не вижу не одного плюса в первом варианте.
     
  5. Virtual8086

    Virtual8086 Дмитрий

    Blog Posts:
    0
    Joined:
    Oct 23, 2009
    Messages:
    9
    Location:
    Беларусь
    Спс за ответы. Если ещё будут мысли - рад буду прочитать, но в целом вопрос прикрыт.