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

Вниз

Сколько места в оперативной памяти занимает переменная?   Найти похожие ветки 

 
killer ©   (2003-09-20 12:02) [0]

Как узнать сколько места (байтов или битов) занимает в оперативной памяти переменная?


 
Palladin ©   (2003-09-20 12:06) [1]

SizeOf


 
Юрий Федоров ©   (2003-09-20 12:13) [2]

Это смотря какая переменная. В случае указателя (экземпляр класса, динамический массив, строка) SizeOf не подходит ))


 
Владислав ©   (2003-09-20 12:42) [3]

> Юрий Федоров © (20.09.03 12:13) [2]

Ну почему же? Подходит. Просто 4 байта.


 
Юрий Федоров ©   (2003-09-20 12:44) [4]

>>Владислав © (20.09.03 12:42) [3]
Это смотря что называть переменной )))


 
Palladin ©   (2003-09-20 12:46) [5]

"Месть кота Леопольда" :)

Юрий Федоров имел в виду что таким образом действительный размер памяти выделеный в heap в контексте переменной-указателя получить при помощи SizeOf нельзя, а в случае если это экземплятор класса это значение вообще проблематично получить...


 
Владислав ©   (2003-09-20 12:58) [6]

> Юрий Федоров © (20.09.03 12:44) [4]

Да что бы не назвать. Пофигу.

> Palladin © (20.09.03 12:46) [5]

"действительный размер памяти выделеный в heap в контексте переменной-указателя получить при помощи SizeOf нельзя"

Что бы это значило :-0?

p: Pointer;
...
ShowMessage(IntToStr(SizeOf(p)))

Чего покажет окно сообщения? Я думаю 4. И то действительно так (пока, во всяком случае). А вопрос, о том, сколько выделяется памяти подо что то, на что ссылается указатель, не стоял.


 
Palladin ©   (2003-09-20 13:05) [7]

а это значит

p: Pointer;
...
GetMem(p,10)
ShowMessage(IntToStr(SizeOf(p^)))

выдаст 0...


 
Владислав ©   (2003-09-20 13:10) [8]

А, ну это типа узнать размер неизвестно чего нельзя? Кстати, а разве p^ переменная? ;-)


 
Palladin ©   (2003-09-20 13:14) [9]

нет :) но скажем
var
f:TForm;
e:TEdit;

бедняга killer выпадет в ступор если увидит что SizeOf(e)=4 и более того, факт, никаким законам логики killerа не подчиняющийся (ведь form она большаая), SizeOf(f) будет тоже 4....
вот об этом его и предупредили... очень размыто правда :)


 
Владислав ©   (2003-09-20 13:18) [10]

"очень размыто правда :)"

То то и оно ;-)


 
jack128 ©   (2003-09-20 13:33) [11]


> а в случае если это экземплятор класса это значение вообще
> проблематично получить...

Вот как раз это то можно получить Tobject.InstanceSize. Другое дело что если поле класса например типа string, то его(поля) размер будет учитываться как 4 байта...


 
MBo ©   (2003-09-20 13:50) [12]

Ага, а потом еще небось эту переменную понадобится "отчистить"...


 
Verg ©   (2003-09-20 13:51) [13]


> Ага, а потом еще небось эту переменную понадобится "отчистить"...


Ага, при том "полностью" или "железно"


 
ki11er   (2003-09-20 14:10) [14]


> А, ну это типа узнать размер неизвестно чего нельзя?

Можно.


 
Владислав ©   (2003-09-20 15:00) [15]

> ki11er (20.09.03 14:10) [14]

Вам виднее ;-)


 
Zacho ©   (2003-09-20 15:17) [16]

Размер неизвестно чего узнать можно, но только в неизвестных единицах измерения :)


 
PVOzerski ©   (2003-09-20 16:09) [17]

А теперь "взвесьте" связный список, созданный динамически :^)


 
ki11er   (2003-09-20 19:28) [18]


> Размер неизвестно чего узнать можно, но только в неизвестных
> единицах измерения :)

Я имел в виду, что имея указатель (адрес любого объекта в памяти), под дэлфями можно узнать, сколько выделено под него памяти. Естесственно, если это "список" или что-то в этом роде, то можно получить только размер, выделенный под хранение самого объекта, т.е. без учета элементов списка.


 
WihOut Any ...   (2003-09-20 19:39) [19]

2 ki11er
Пусть модератор меня покарает, а какого ... это тебя интересует, В ЧЁМ ПРИКОЛ? Экономия памяти или ИШО чо-о?


 
Anatoly Podgoretsky ©   (2003-09-20 20:18) [20]

PVOzerski © (20.09.03 16:09) [17]
Закольцованный, или еще более сложную систему, где может быть множество ссылок, на такие же сложные структуры, включая на самого себя.


 
ki11er   (2003-09-22 13:54) [21]

2 WihOut Any
Чувак, не путай меня ki11er"a с killer"ом.
Я не виноват, что он взял ник, очень похожий на мой ;-(


 
default ©   (2003-09-22 13:59) [22]

кстати ведь можно писать
var
P: Pointer;
begin
GetMem(P, 5);
PByte(P) := 7;
FreeMem(P);
// ...
значит где-то хранится инфа об размере указателя, дальше сам



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

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

Наверх




Память: 0.51 MB
Время: 0.022 c
1-3828
3APA3A
2003-09-19 00:13
2003.10.02
Есть ли в ListBox е полоса прокрутки


3-3732
AndrewK
2003-09-12 12:50
2003.10.02
Как работать с параметрами в TADOQuery?


1-3957
Virus.ex
2003-09-20 13:46
2003.10.02
обработчики.......


14-4098
wnew
2003-09-08 13:35
2003.10.02
Востановление данных на CD


1-3958
Sour
2003-09-20 09:30
2003.10.02
Тащи-Кидай из DBGrid