![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с динамической памятью! [D7, XP]
Dysan © (2006-02-02 18:17:00)в программе часто использую SetLength(...)
и как мне кажеться из-за такого способа в программе часто вылетает ошибка "out of memory" и т.п. в тех места которые должны работать как часы и перепроверены много раз, а может и не вылететь и отработать как надо!
отсюда вопрос. я прав? и как тогда правильно работать с динамическими массивами?
Desdechado (2006-02-02 22:29:00) [21]> гражданин Desdechado © (02.02.06 19:59) [7] утверждает, что
> динамические массивы основаны на списках, что уж точно бред
Если ты внимательно читал пост [7], то там написано "подозреваю", а не "утверждаю". Твои же посты как раз очень категоричны и, как принято, совершенно без аргументов.
> Ищи глюк в себе
На личности переходят, когда по существу сказать нечего.
Loginov Dmitry (2006-02-02 22:24:00) [22]
> Sergey Masloff (02.02.06 22:08) [12]
>
> Loginov Dmitry © (02.02.06 22:01) [10]
> >С появлением динамических массивов потребность в конструкциях,
> >подобной указанной вами, практически отпала.
> Извините, это бред
Это не есть бред. Я же не сказал, что полностью отпала. Просто сейчас благодаря динамическим массивам стало гораздо проще организовывать списки. А гражданин Desdechado © (02.02.06 19:59) [7] утверждает, что динамические массивы основаны на списках, что уж точно бред.
Desdechado © (02.02.06 22:07) [11]
> потребность в массивах фиксированной длины (и TList тем
> паче) не отпадет, пока будут глюки с динамическими массивами
Ищи глюк в себе.
Sergey Masloff (2006-02-02 22:20:00) [23]А то так можно заключить что с появлением типа Variant надобность во всех остальных типах отпала (ну или практически отпала)
;-)))
Desdechado (2006-02-02 22:17:00) [24]> на фиг заморочки с управляемыми переменными
именно поэтому я вставил "(и TList тем паче)"
Sergey Masloff (2006-02-02 22:13:00) [25]Desdechado © (02.02.06 22:07) [11]
> имхо, потребность в массивах фиксированной длины (и TList тем паче) не >отпадет, пока будут глюки с динамическими массивами
И потом не отпадет потому что на фиг заморочки с управляемыми переменными когда можно просто руками быстро выделить блок памяти и максимально быстро по нему позиционироваться просто переставляя указатель а потом замочить когда не надо не возлагая это на других.
Все же динамические массивы это несколько другое и для других целей
Sergey Masloff (2006-02-02 22:08:00) [26]Loginov Dmitry © (02.02.06 22:01) [10]
>С появлением динамических массивов потребность в конструкциях, >подобной указанной вами, практически отпала.
Извините, это бред
Desdechado (2006-02-02 22:07:00) [27]> потребность в конструкциях практически отпала
И что, из этого начинает следовать, что TList основан на динамических массивах?
Странная логика... Тем более странная, что TList был с первой версии Дельфи, а не с 4-й.
P.S. имхо, потребность в массивах фиксированной длины (и TList тем паче) не отпадет, пока будут глюки с динамическими массивами
Loginov Dmitry (2006-02-02 22:01:00) [28]
> используется массив фиксированной длины, а не динамический.
Не совсем так. Раньше динамических массивов не было (до появления Delphi 4), однако их функции успешно выполняли, как вы выразились, "массивы фиксированной длины". С появлением динамических массивов потребность в конструкциях, подобной указанной вами, практически отпала.
Desdechado (2006-02-02 21:33:00) [29]> Наоборот только
Не надо ля-ля. Цитирую Classes.pas
PPointerList = ^TPointerList;
TPointerList = array[0..MaxListSize - 1] of Pointer;
TList = class(TObject)
private
FList: PPointerList;
Как видно, используется массив фиксированной длины, а не динамический.
А вот динамический очень напоминает список по своим возможностям и поведению.
Loginov Dmitry (2006-02-02 20:12:00) [30]
> Подозреваю, что динамические массивы внутри реализованы
> через тот же TList...
Наоборот только.
Desdechado (2006-02-02 19:59:00) [31]Я с такой вешью сталкивался. Динамические массивы реализованы как-то кривовато. Понемножку (с маленькими объемами и не сильно терзая изменениями размеров) с ними работать можно. По-серьезному (десятки тысяч элементов) - вряд ли, ибо жрет многопамяти и валится на AV.
Я стал использовать TList, все пошло как по маслу. Рекомендую.
P.S. Подозреваю, что динамические массивы внутри реализованы через тот же TList, но вот как-то не так...
Darvin (2006-02-02 18:58:00) [32]берешь и комментируешь подозрительные места в проекте, пока не заработает. Так и находишь место косяка.
Dysan (2006-02-02 18:49:00) [33]ну код показать затруднительно.
весь проект занимает тысяч 10 строк кода
поэтому что показывать я не знаю!
а "жёской" это значит во время работы создаеться много разных массивов удаляються снова создаються т.п. - жесть одним словом :)
Gero (2006-02-02 18:43:00) [34]> после "жёской" работы
Это как?
TUser (2006-02-02 18:40:00) [35]
> тогда обьясните мне почему программа при запуске выдает
> ошибку при выходе из процедуры на последней команде (причем
> любой! главное чтоб она была последней) после "жёской" работы
> с большим кол-вом динамических массивов. НО! если пройтись
> дебагом по всем строчкам кода то из этой самой процедуры
> она выйдет без проблем! и никакой ошибки не возникнет!
Полагаю, что надо посмотреть на твой код.
Dysan (2006-02-02 18:32:00) [36]тогда обьясните мне почему программа при запуске выдает ошибку при выходе из процедуры на последней команде (причем любой! главное чтоб она была последней) после "жёской" работы с большим кол-вом динамических массивов. НО! если пройтись дебагом по всем строчкам кода то из этой самой процедуры она выйдет без проблем! и никакой ошибки не возникнет!
Johnmen (2006-02-02 18:22:00) [37]Так и работать.
"out of memory" к данной процедуре прямого отношения не имеет.