Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Размер переменной типа class.   Найти похожие ветки 

 
Ev_genus ©   (2002-07-16 03:53) [0]

Недавно заметил что данные занимают больше памяти, чем я предполагал.(проверено программкой CashMan)Как правильно узнать сабж? Как мне кажется, проблемно узнать размер в памяти, если в переменную входят другие поля типа class. Есть такая вещь как InstanceSize. Но я точно не понимаю что оно делает.
Заранее спасибо.


 
c0pYc@t   (2002-07-16 08:54) [1]

А такое как typeof() не помогает?


 
c0pYc@t   (2002-07-16 08:55) [2]

Или sizeof()


 
Ev_genus ©   (2002-07-16 09:00) [3]

typeof - не знаю такого, хелп делфей тоже не знает
sizeof выдаст 4, так как class - это указатель в дин память.

Мне нужно узнать сколько тратится памяти когда я выполняю create? И если можно, то как её размер уменьшить?


 
Digitman ©   (2002-07-16 09:51) [4]

В момент выполнения метода-конструктора объекта (но перед выполнением собственно его тела) менеджер памяти выделяет под экз-р нового объекта блок памяти, равный InstanceSize. Прочитав значение этого св-ва в теле метода-конструктора или за его пределами ты получишь точную и исчерпывающую инф-цию о размере блока памяти, занимаемого объектом.

см.хэлп :

Returns the size in bytes of each instance of the object type.

class function InstanceSize: Longint;

Description

Use InstanceSize to determine how many bytes of memory are required for a class’s instance data. Delphi uses InstanceSize internally for methods that allocate and deallocate memory. InstanceSize is not a virtual method, so it cannot be overridden. InitInstance should only be called in the context of implementing a custom version of NewInstance.

Уменьшить размер блока ты не можешь да и не имеешь права : величина эта статическая и неизменяемая в run-time, формируется она компилятором и определяется текущей декларацией класса на момент компиляции. Складывается эта величина из суммарных размеров полей - членов класса и выравнивается компилятором по границе дв.слова


 
Anatoly Podgoretsky ©   (2002-07-16 09:59) [5]

И естественно не учитывает память, котрая распределяется вне объекта, например другие классы, списки, строки и прочее, получается как не совсем полезная информация


 
reonid ©   (2002-07-16 10:01) [6]

Посмотри разность AllocMemSize до и после Create.
(Но сюда войдёт только память, выделенная через дельфийский менеджер памяти).



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

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
14-95498
xmrz
2002-06-30 16:32
2002.07.29
злободневная тема: сколько взять?


1-95313
EugenCFG
2002-07-17 18:47
2002.07.29
Как преобразовать значение ColorValue в строку...???


1-95343
newone
2002-07-17 11:02
2002.07.29
Добавление макроса в Excel


8-95452
Pavel_S
2002-03-22 13:45
2002.07.29
DirectX и OpenGL


7-95577
KUAW
2002-05-13 16:35
2002.07.29
Как БЫСТРО повернуть область Canvas-a заданную TRect на 90 град.