Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Вниз

Работа с динамическими массивами.   Найти похожие ветки 

 
1008 ©   (2004-06-10 13:29) [0]

В моей программе присутствует несколько форм (например 3). По ходу работы я произвожу следующее:
В форме №1 произвожу необходимые начальные установки;
В форме №2 производится обработка (при этом создаются динамические массивы - SetLength);
В форме №3 вывожу результат. Из формы номер три можно попасть в форму №1.

Если я опять перейду из формы №1 в форму №2, то массив будет создан заново - или в этом месте мне надо обнулить массив, а затем пересоздать?


 
Clickmaker ©   (2004-06-10 13:33) [1]


> Если я опять перейду из формы №1 в форму №2

Что значит перейдешь? Создашь ее заново или просто активируешь? Если массив - свойство формы, то при ее удалении удалится и сам массив. Если глобальный или форма не удаляется, то достаточно просто сказать SetLength в нужный момент, память перераспределится при этом автоматом.


 
1008 ©   (2004-06-10 13:39) [2]

Clickmaker ©  (10.06.04 13:33) [1]

Подозреваю, что пока я нахожусь в программе все формы существуют - я их не удаляю. Следовательно при переходе (в форме №3 комманда Close; в форме №2 аналогично) все формы существуют и массивы также - я могу обратиться к массиву, если он объявлен глобальной переменной.

То есть мне не надо заботиться о памяти - при вводе новой длины она автоматически будет очищена от станого массива и создан новый? Я правильно понял?


 
DimKa ©   (2004-06-10 13:47) [3]

Вроде при изменении длины данные массива не изменяются, при увеличении - просто добавляется памать, при уменьшении часть данных урезается.
Советую обнулить массив или необнулять, если в каждый элемент что-нибудь обязательно запишешь.


 
Anatoly Podgoretsky ©   (2004-06-10 13:51) [4]

Компилятор сам следит за удалением и созданием массива, через механизм ссылок.


 
Романов Р.В. ©   (2004-06-10 13:52) [5]


> Советую обнулить массив

Зачем обнулять?
Только при необходимости задать начальные значения элементов массива.


 
1008 ©   (2004-06-10 13:59) [6]

Если, например, при первом создании массива мне была нужна длина в 100 элементов, а во второй в 75 - что произойдёт при использовании SetLength? Будет ли освобождена память, которая была выделена на 25 элементов, которые уже мне не нужны?


 
Тимохов ©   (2004-06-10 14:07) [7]


> 1008 ©   (10.06.04 13:59) [6]

верьте setlength: если вы своими хитрымы ручками на нарушите подсчет ссылок, то все будет коррекно освобождено.

Т.о. если не выпендриваться и не пытаться замучать компилятор "хитрыми" методами работы с дин массивами, то он сможет вам гарантировать - за памятью под дин. массивами слежу я!


 
Романов Р.В. ©   (2004-06-10 14:09) [8]

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


 
1008 ©   (2004-06-10 14:18) [9]

Спасибо теперь понял.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
14-1086883820
BlackLord2003
2004-06-10 20:10
2004.06.27
Resourcestring


3-1086090911
rvs
2004-06-01 15:55
2004.06.27
Проблема с запросом


1-1087080928
Torus
2004-06-13 02:55
2004.06.27
Messages


14-1086590924
infom
2004-06-07 10:48
2004.06.27
Помогите с покупкой компьютера !


1-1087207741
Arestotel
2004-06-14 14:09
2004.06.27
Проблемы с MDI !!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский