Конференция "Основная" » Максимальный размер tStringList [WinXP]
 
  • Сергей М. © (22.11.07 16:58) [20]

    > масленица   (22.11.07 16:47) [18]


    Ты , во-первых, на "тыхто" не ответил)

    А во-вторых, "Максимальный размер tStringList"=SizeOf(tStringList)

    Ку?)
  • DiamondShark © (22.11.07 17:53) [21]

    > Может еще в Паскале, когда Integer было 32х-разрядное. Но
    > почемуто не 64К, а 64К/4. Хотя какая разница, что тогда
    > было....

    Эх, молодёжь...

    В Паскале (до дельфи-2) Integer никогда не было 32х-разрядное, а когда оно такое стало, ограничения на tStringList уже не стало.
    64К -- это было ограничение на непрерывный блок памяти в DOS и Win16 (потому что один сегмент), а 64К/4 -- потому что tStringList содержит массив указателей, а размер указателя -- 4 байта.
  • Евгений Р. (22.11.07 18:08) [22]

    > Сергей М. ©   (22.11.07 15:53) [12]
    > > Паскаль- Integer 2х-байтовое
    > Какое отношение это имеет к
    > > размер tStringList


    tStringList.count:integer.

    Поэтому в вышеописанном случае максимальное число элементов - 32к.
  • Anatoly Podgoretsky © (22.11.07 18:57) [23]
    > Евгений Р.  (22.11.2007 18:08:22)  [22]

    Кроме count есть еще и понятие экстент, в 16 разрядном режиме он равен 64 кб, значит в экстент не может поместиться более 16K длинных указателей.
  • Евгений Р. (22.11.07 20:25) [24]

    > Anatoly Podgoretsky ©   (22.11.07 18:57) [23]

    Я думал, что память под указатели выделяется динамически, по мере заполнения коллекции, а не сразу по экстенту (тогда это называли сегментом). Неразумно тогда было так расбрасываться памятью.
  • Anatoly Podgoretsky © (22.11.07 20:34) [25]
    > Евгений Р.  (22.11.2007 20:25:24)  [24]

    Список содержит список указателей, из любых сегментов, но сам список не может пересекать границу сегмента.
  • Евгений Р. (22.11.07 20:48) [26]
    Вспоминаем Паскаль, DOS.
    1.Объем памяти 640К (до 1 МБ). Называлось "куча"
    2.Сегмент данных 64К. Отъедается из кучи.
    3.Стек до 64К. Отъедается из кучи.
    4.+код+пямять для ДОС...
    5.Остается немного.
    6.Создаем коллекцию. Из сегмента данных (стека если из процедуры) отъелось несколько байт.
    7.Коллекция пустая. Сколько отъелось из скудной кучи? Нисколько или 64К?
  • Сергей М. © (23.11.07 10:52) [27]

    > Евгений Р.   (22.11.07 18:08) [22]


    "максимальное число элементов" никак не кореллирует с "Максимальный размер tStringList"
  • Anatoly Podgoretsky © (23.11.07 11:16) [28]
    > Сергей М.  (23.11.2007 10:52:27)  [27]

    И не может коррелироваться, у tStringList нет размера, не визуальный, а есть только емкость, поскольку контейнер.
  • KilkennyCat © (24.11.07 20:17) [29]

    > Anatoly Podgoretsky ©   (23.11.07 11:16) [28]

    могу доказать что у TStringlist есть размер. Вот только определение размера сложновато: зависит от типа процессора, озу и проч.
  • Anatoly Podgoretsky © (24.11.07 20:21) [30]
    > KilkennyCat  (24.11.2007 20:17:29)  [29]

    Хочешь сказать 3 на 2 метра, или длиной 12 метров?
  • Германн © (24.11.07 20:30) [31]

    > Anatoly Podgoretsky ©   (24.11.07 20:21) [30]

    7 на 8
  • KilkennyCat © (24.11.07 20:33) [32]

    > Anatoly Podgoretsky
    > Германн

    Где вы такие модули памяти видели? Помнится, я выковыривал ящичек озу из "Мир-2", так и он был от силы полметра на полметра и высотой сантиметров тридцать.... а учитывая, что стринглист сожрет не все, размер его будет еще меньше. Но будет!
  • Германн © (24.11.07 20:53) [33]

    > Где вы такие модули памяти видели?

    Я не видел. Но я о них читал. У Азимова.
    :-)
 
Конференция "Основная" » Максимальный размер tStringList [WinXP]
Есть новые Нет новых   [134479   +12][b:0][p:0]