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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 12:37   #1
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию Происходит ли перераспределение памяти при присваивании динамических массивов одинаковых размеров?

Как Вы думаете, происходит ли перераспределение памяти при присваивании одного массива другому, однинаковых размеров:
Код:
var
  A, B: TBytes;
begin
  SetLength(A, 5);
  SetLength(B, 5);

  A := B;
Я конечно могу скопировать память с одного участка памяти в другой, но хотелось бы использовать встроенные возможности. Но поскольку производительность критична, то хотелась бы узнать, что делает компилятор при присваивании динамических массив. Спасибо
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 06.10.2012, 12:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Поищи описание функции DynArrayAsg. Этим занимается она.
По-моему просто одному указателю присваивается другой без переноса самих данных, хотя может быть это решает оптимизатор, когда копию делать а когда просто создавать дубликат указателя.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2012, 13:02   #3
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Спасибо Stilet.
Проверил опытным путем. Происходит всего лишь копирование указателя. После изменения данных в исходном массиве, распределение памяти для второго массива не происходит, как с string.
Буду копировать данные цепочечной командой
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить обработку массивов. предусмотреть описание массивов как динамических Vika_0_0 Паскаль, Turbo Pascal, PascalABC.NET 8 03.06.2012 10:12
желание одинаковых размеров Екселем? vostok Microsoft Office Excel 12 09.04.2012 21:04
При присваивании копируется объект или ссылка на него? KiL0z Общие вопросы Delphi 2 11.06.2011 19:57
ПРи присваивании теряются символы Radiy Общие вопросы Delphi 6 18.06.2010 13:43
Ошибка при присваивании NeiL Общие вопросы Delphi 5 16.04.2008 22:24