![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Размер переменной типа class.
Ev_genus © (2002-07-16 03:53:00)Недавно заметил что данные занимают больше памяти, чем я предполагал.(проверено программкой CashMan)Как правильно узнать сабж? Как мне кажется, проблемно узнать размер в памяти, если в переменную входят другие поля типа class. Есть такая вещь как InstanceSize. Но я точно не понимаю что оно делает.
Заранее спасибо.
reonid (2002-07-16 10:01:00) [1]Посмотри разность AllocMemSize до и после Create.
(Но сюда войдёт только память, выделенная через дельфийский менеджер памяти).
Anatoly Podgoretsky (2002-07-16 09:59:00) [2]И естественно не учитывает память, котрая распределяется вне объекта, например другие классы, списки, строки и прочее, получается как не совсем полезная информация
Digitman (2002-07-16 09:51:00) [3]В момент выполнения метода-конструктора объекта (но перед выполнением собственно его тела) менеджер памяти выделяет под экз-р нового объекта блок памяти, равный 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, формируется она компилятором и определяется текущей декларацией класса на момент компиляции. Складывается эта величина из суммарных размеров полей - членов класса и выравнивается компилятором по границе дв.слова
Ev_genus (2002-07-16 09:00:00) [4]typeof - не знаю такого, хелп делфей тоже не знает
sizeof выдаст 4, так как class - это указатель в дин память.
Мне нужно узнать сколько тратится памяти когда я выполняю create? И если можно, то как её размер уменьшить?
c0pYc@t (2002-07-16 08:55:00) [5]Или sizeof()
c0pYc@t (2002-07-16 08:54:00) [6]А такое как typeof() не помогает?