Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как узнать сколько памяти занимает объект


Автор: Delphist 22.5.2007, 18:48
Как узнать сколько памяти занимает объект наследованный от TObject.

Автор: Alexeis 22.5.2007, 20:10
TInherFromObject.InstanceSize; - вернет размер экземпляра объекта.

Добавлено через 36 секунд
Это метод класса

Автор: Fox_in 22.5.2007, 20:17
кажется так:
Код

function sizeOf(a) : integer;

Автор: Snowy 22.5.2007, 20:50
Цитата(Fox_in @  22.5.2007,  20:17 Найти цитируемый пост)
кажется так:
Я даже сразу тебе скажу, что вернёт... Результат будет равен 4 байта ;-)
В общем случае правильно InstanceSize. Но и он далёк от совершенства.
Кто знает, сколько памяти может выделять инстанс во время своей работы...
Один лишь FastMM знает. Но даже он не скажет сколько памяти просил инстанс.
Максимум покажет факт выделения. А кто просил память... Это только по коду можно выяснить...
Вобщем гарантированного способа нет.

Автор: Alexeis 22.5.2007, 21:08
 Ну да InstanceSize, это только размер самих полей объекта, а если поля это указатели, то объем выделенный для них памяти, не считается в InstanceSize, да и не может, ведь экземпляры объекта одного и того же класса могут иметь самый разный размер, от нескольких байт до сотен мегабайт. Яркий пример TMemoryStream.

Автор: Fox_in 23.5.2007, 10:33
А можно как-нибудь посчитать размер объекта, на который есть указатель??

Автор: Snowy 23.5.2007, 10:39
Аналогично. Привести его к TObject и спросить у него InstanceSize.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)