Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26158
Рейтинг: 2127
#226: 2012-04-11 15:31:32 ЛС | профиль | цитата
Tad писал(а):
будет выделено место в непрерывной области памяти

Забыл уточнить -- виртуальной, не факт, что это будет непрерывная физическая память.
------------ Дoбавленo в 15.31:
Продолжение исследований. Схема на рассыпухе с возможностью наращивать и сокращать размер массива. Но надо обновить c SVN компонент MT_MTArray, куда добавлен метод doDelete
карма: 22

0
файлы: 1hiasm_clasterarray_002.sha [9.5KB] [220]
Ответов: 9906
Рейтинг: 351
#227: 2012-04-11 15:32:45 ЛС | профиль | цитата
Tad писал(а):
Galkov, привет!
Товарищ по фамилии Realloc делает то же самое ...

1) Аналогично
2) Имелся в виду конкретный товарищ: WinAPI.HeapRealloc.
Юридически: никто не утвержал, что он копирует, или НЕ копирует.

Вывод: утверждение, что "Товарищ .... делает то же самое " не является логически доказуемым.
Верным таки является мое: "НЕ ФАКТ, что копируется"
Ну а я бы не стал делать ставку на то, что они все там дураки.
Такое быть конечно может,но ставку делать не стал бы...

В принципе, вопрос важный в теоретическом смысле: нужны ли встроенные в некий ЯВУ всякие там "SetLength-ы", или это личное дело строителей библиотек... Холиваров на эту тему хватает...
Ну согласись, копировать, или иметь халявную копию нескольких гигов - может оказаться не всем безразлично.

карма: 9

0
Ответов: 16884
Рейтинг: 1239
#228: 2012-04-11 16:50:17 ЛС | профиль | цитата
nesco писал(а):
не факт, что это будет непрерывная физическая память.
Где про это написано. А по моему -Факт, что это будет непрерывная физическая память.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#229: 2012-04-11 17:14:41 ЛС | профиль | цитата
Tad писал(а):
А по моему -Факт, что это будет непрерывная физическая память

Я не спорю, может быть, но постоянное скакание из одного участка в другой приводит к повышению франментации выделенной памяти кучи. И може наступить момент, когда получишь вот такой ответ -- Out Of Memory. Такие случаи встречались при форсированном использовании динамического массива в сторону увеличения размера
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#230: 2012-04-11 17:23:22 ЛС | профиль | цитата
nesco писал(а):
но постоянное скакание из одного участка в другой
а вот это, как говорит Galkov, не факт. Скакание только когда нет места для расширения массива.
Кстати, для обработки и строк и массивов применяются одни и те же алгоритмы потому, что они распологаются именно в непрерывной физической памяти.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#231: 2012-04-11 17:34:59 ЛС | профиль | цитата
А как тогда вот это объяснить -- http://www.delphimaster.ru/cgi-bin/forum.pl?id=1307429189&n=0
------------ Дoбавленo в 17.28:
Tad писал(а):
Скакание только когда нет места для расширения массива

Как ты читаешь, понятия не имею
nesco писал(а):
И може наступить момент, когда получишь вот такой ответ -- Out Of Memory. Такие случаи встречались при форсированном использовании динамического массива в сторону увеличения размера


------------ Дoбавленo в 17.34:
Tad писал(а):
Кстати, для обработки и строк и массивов применяются одни и те же алгоритмы потому, что они распологаются именно в непрерывной физической памяти

Для выделения непрерывного физического участка памяти, необходимо выделить этот участок в куче, если он есть, то туда копируется твой массив, и его размер увеличивается, предыдущий участок очищается. Предположим, ты постоянно увеличиваешь массив, пустые куски остаются никому не нужными, ну не запрашиваешь ты ничего, кроме изменения массива, и вот наступает момент, когда нужный кусок выделен быть не может, что ты получишть в ответ
По-хорошему, надо регулярно дефрагментировать память, тогда не будет никаких приколов с выделением памяти при использовании динамических массивов
карма: 22

1
Голосовали:login
Ответов: 16884
Рейтинг: 1239
#232: 2012-04-11 17:38:25 ЛС | профиль | цитата
Читаю я нормально.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#233: 2012-04-11 17:40:34 ЛС | профиль | цитата
Tad писал(а):
Читаю я нормально

А че тогда так отвечаешь, повторяя то, что было написано выше
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#234: 2012-04-11 17:43:09 ЛС | профиль | цитата
nesco писал(а):
По-хорошему, надо регулярно дефрагментировать память
Есть менеджер памяти Windows и не надо ему мешать делать своё дело.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#235: 2012-04-11 17:54:19 ЛС | профиль | цитата
Tad писал(а):
Есть менеджер памяти Windows и не надо ему мешать делать своё дело

Это только в новых системах, менеджер автоматически собирает фрагменты и тусует приложения в памяти. На старых ситемах, увы, но этого не предусматривалось
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#236: 2012-04-11 18:02:57 ЛС | профиль | цитата
Кстати, любой запускаемой проге тоже выделяется непрерывная физическая память.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26158
Рейтинг: 2127
#237: 2012-04-11 19:46:35 ЛС | профиль | цитата
Tad писал(а):
выделяется непрерывная физическая память

Ага, особенно, когда системе ее не хватает, и она начинает сбрасывать приложения кусками на диск. Если бы приложению всегда выделялась непрерывная память, то не существовало бы понятий динамического выделения памяти и виртуального адресного пространства
------------ Дoбавленo в 19.46:
Вот познавательная статейка про выделение памяти -- http://www.codenet.ru/progr/os/RAM/RAM-4.php
Кстати, "Куча с пониженной фрагментацией" и есть табличный кластерный массив с фиксированной длиной элемента, и как видно, не является непрерывной памятью, а именно кластерным распределением участков
карма: 22

1
Голосовали:login
Ответов: 16884
Рейтинг: 1239
#238: 2012-04-11 20:30:17 ЛС | профиль | цитата
Как ты говоришь - не смеши мои тапочки ?
nesco писал(а):
Вот познавательная статейка
познавательная статейка писал(а):
Автор не знает алгоритмов выделения и освобождения памяти в куче, однако предполагает
Из цикла - Одна баба сказала...
------------ Дoбавленo в 20.30:
Если "автор не знает", то дальше даже читать не стоит.(ударение в последнм слове можно на любую гласную)
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1429
Рейтинг: 50
#239: 2012-04-11 20:38:32 ЛС | профиль | цитата
[flood]Очень интересная тема, и ссылки. Спасибо![/flood]
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#240: 2012-04-11 20:55:33 ЛС | профиль | цитата
login,
А вот по ссылкам ходить не надо. ИМХО.
Сейчас у нас пейсах. Закончится - заеду в офис MicroSoft. Спрошу у спецов. Если получу вразумительный ответ, то поделюсь.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)