Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Теория динамических массивов

525
01 октября 2002 года
December
82 / / 20.08.2000
Здравствуйте.
Таким вот вопросом задался: есть, допустим, массив
var
DynArr:Array of byte;
и, допустим, выделяем ему памяти кусочек
SetLength(DynArr,100000);
и дальше работа кипит. А потом понадобилась ещё память, и говорим:
SetLength(DynArr,10000000);
Будет ли новообразованный блок памяти на том же адресе, и не будет ли он перекрывать другие данные?

И ещё. Постоянно резидентом висит machine debug manager. Если в двух словах, что это за зверь такой, и можно ли его как использовать?
1.0K
01 октября 2002 года
MsDie
13 / / 20.06.2000
Будет ли он на том адресе думаю можно отследить кодом типа

Type
DA:array of byte;
PDA:^DA;

Var
DynArr:DA;
SP,P:PDA;

Begin
SetLength(DynArr,100000);
SP:=@DynArr;
...
SetLength(DynArr,10000000000);
P:=@DynArr;
If SP=P
then
ShowMessage('Адрес тот же')
else
ShowMessage('Адрес не тот же');
End.

Думаю должно пойти (у меня сейчас Делфи нет - проверить не могу). А данные не будут перекрываться , иначе зачем были бы нужны динамические массивы ? Извиняюсь если не так понял вопрос .
2.5K
07 октября 2002 года
Игорь
1 / / 07.10.2002
Не знаю как насчет памяти но перекрывать ничего не будет просто к твоему массиву добавиться еще несколько значений правда запись
SetLength(DynArr,100000);
не означает что ты выделяеш память а означает что ты создал массив длинной 100000 а программа за тебя выделит необходимую память.
Если ты увеличиваеш число допустим в 2 раза
SetLength(DynArr,200000); то утебя к концу массива добавяться несколько значений причем ты ничего не теряеш из предидущих данных,
SetLength(DynArr,50000);
если ты сократишь число в 2 раза то массив урежется соответсвенно в 2 раза

machine debug manager.
Это просто дебагер поставляемый с офисом. используй как нибудь :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог