Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический массив объектов, или сколько я теряю памяти если ... 
:(
    Опции темы
Monty
Дата 19.5.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: нет
Всего: 27



Динамический массив объектов или сколько я теряю памяти если используются не все элементы внем, т.е. если массив кнопочек (да чего угодно) имеет длину 10, а используется всего три, причем созданны только три, остальные вообще не используются или после использования разрушаются ... вот меня и интересует, теряю ли я память в размере с объект или меньше чем сам объект? Или вообще не теряю smile
Код
var
  xMassive: array of TForm; //так круче кажется :)
...
  SetLength(xMassive, 6);
  xMassive[0] := TForm.Create(nil); //к примеру ...
  xMassive[2] := TForm.Create(nil); //к примеру ...
  xMassive[4] := TForm.Create(nil); //к примеру ...

Вот я и не понимаю сколько в общем я трачу памяти smile


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Snowy
Дата 19.5.2005, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



По идее, если класс не создан, то в массиме сидит только указатель на мусор (в случае динамического массива, для статичного все указатели указывают на nil).
То есть, кол-во неиспользованных элементов * 4 байта.
Ну и плюс память SizeOf() * на кол-во созданых контролов.

Это сообщение отредактировал(а) Snowy - 19.5.2005, 16:27
PM MAIL   Вверх
Monty
Дата 19.5.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Advanced Lamer
****


Профиль
Группа: Участник Клуба
Сообщений: 3511
Регистрация: 3.4.2003
Где: Гваделупа

Репутация: нет
Всего: 27



Цитата(Snowy @ 19.5.2005, 15:25)
По идее, если класс не создан, то в массиме сидит только указатель на мусор (в случае динамической формы).
То есть, кол-во неиспользованных элементов * 4 байта.

Да, это логично smile ... но я могу сделать отслежку свободных так сказать ячеик и в освобожденных ячейках создавать объекты ... вот только как я вижу, это не надо smile ... мне 4-х байт не жалко smile
Добавлено @ 16:30
Цитата(Snowy @ 19.5.2005, 15:25)
SizeOf()

Что-то она очень маленькое значение показывала ... хотя сегодня еще раз посмотрю smile ... но тагда я ей не поверил smile


--------------------
...
О, вещая моя печаль,
О, тихая моя свобода
И неживого небосвода
Всегда смеющийся хрусталь!
PM MAIL ICQ   Вверх
Snowy
Дата 19.5.2005, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Monty @ 19.5.2005, 16:28)
Что-то она очень маленькое значение показывала ... хотя сегодня еще раз посмотрю  ... но тагда я ей не поверил

Ну да, ну да. SizeOf тут не применим.
Он покажет только размер структуры TForm, но не ее элементы.
Размер маленький, потому что SizeOf покажет размеры не котролов и др. динамических объектов, а только их указатели. Посчитать настоящий объем будет затруднительно...
А пустые элементы так и будут 4 байта (точнее SizeOf указателя - не гарантирую, что для 64 битного проца он будет также 32. Да и может ли дельфи компилить проги под 64 бит? Наверное нет... )
PM MAIL   Вверх
сок
Дата 5.7.2005, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2005

Репутация: нет
Всего: 1



не знал что можно создавать динамические массивы объектов...
PM MAIL   Вверх
BiZ
Дата 5.7.2005, 15:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
не знал что можно создавать динамические массивы объектов...

var
xMassive: array of TForm; //так круче кажется smile
...
SetLength(xMassive, 6);
xMassive[0] := TForm.Create(nil); //к примеру ...
xMassive[2] := TForm.Create(nil); //к примеру ...
xMassive[4] := TForm.Create(nil); //к примеру ...



При таком раскладе каждый элемент массива есть не что иное как указатель на объект TForm. И весит каждый элемент ВСЕГДА 4 БАЙТА!!!

Чё вы парите тут вообще? весь массив всегда будет весить 6*4=24 байта!!!! А вот размер оперативки будет заметно уменьшаться при новый строках

xMassive[4] := TForm.Create(nil); //к примеру ...

  Вверх
Snowy
Дата 5.7.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата
не знал что можно создавать динамические массивы объектов...

Можно создать динамический массив чего угодно.

Цитата(BiZ @ 5.7.2005, 15:41)
Чё вы парите тут вообще? весь массив всегда будет весить 6*4=24 байта!!!!

В ответе так и написано. 4 байта на каждый элемент. (для 32-битных систем).

Цитата(BiZ @ 5.7.2005, 15:41)
А вот размер оперативки будет заметно уменьшаться при новый строках
xMassive[4] := TForm.Create(nil); //к примеру ...

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

Ответ давно дан. Не нужно по 10 раз перемалывать одно и то же.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.