Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 03:59   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию SetLength никогда не стирает старые элементы массива?

Или всё-таки иногда стирает, когда не может выделить больший участок памяти?
TwiX вне форума Ответить с цитированием
Старый 18.03.2010, 20:45   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Я думаю, она просто выдаст ошибку о нехватке памяти, а стирать не будет.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 18.03.2010, 22:06   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Я думаю Neeter прав. Ошибка появится связанная с выделением памяти.
Ну и как бы, вот прошелся в пошаговом режиме, то действительно выдает ошибку.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 18.03.2010, 23:56   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Вот допустим у нас такая память)
110022011100001
1 - занято
2 - текущий массив (занято нами)
0 - свободно
Если попросить комп выделить 5 бит, то мы окажемся на последнем участке (ну или в начале первого), а вот сотрётся ли массив?
TwiX вне форума Ответить с цитированием
Старый 19.03.2010, 00:13   #5
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Нет, для новой длины выделяется новая память с последующим копированием стрых элементов, насуолько я знаю. На практике никогда не стиралось, в любом случае.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 19.03.2010, 07:02   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Вот допустим у нас такая память)
110022011100001
1 - занято
2 - текущий массив (занято нами)
0 - свободно
Если попросить комп выделить 5 бит, то мы окажемся на последнем участке (ну или в начале первого), а вот сотрётся ли массив?
Нет не сотрется, есть специальная процедура, называемая дефрагментатором кучи - она сдвигает инфу, пытаясь получить нужный по объему участок памяти. Действие происходит автоматически без участия программиста. В случае если же и этого места не хватит возможны два варианта - либо ошибка либо сброс данных в своп. В любом случае прог всех этих действий не в курсе - она требует и получает кусок памяти .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 19.03.2010 в 07:13.
Utkin вне форума Ответить с цитированием
Старый 20.03.2010, 02:35   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Спасибо) Наконец доступно объяснили)
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одинаковые элементы массива на си elka Помощь студентам 9 25.01.2010 21:57
1.Найти в матрице первую строку, все элементы которой отрицательны 2.отсортировать элементы массива по в w0lf16 Помощь студентам 2 22.11.2009 15:47
Элементы массива Ximer Паскаль, Turbo Pascal, PascalABC.NET 5 26.04.2009 00:53
Повторяющиеся элементы массива Stanislav Общие вопросы Delphi 10 23.05.2008 12:31
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44