Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.016 c
1-3870
s_g
2003-09-19 00:40
2003.10.02
Как для консольного приложения поместить иконку в Tray?


3-3724
Alexei Klimov
2003-09-13 09:50
2003.10.02
Фильтр


3-3768
KDS
2003-09-11 18:15
2003.10.02
SUBSTR и сложение строк в SQL


14-4044
gg
2003-09-15 21:53
2003.10.02
Обработчик событий в паскале


1-3893
_VaaL_
2003-09-12 10:19
2003.10.02
COM. Правильная инициализация/закрытие





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский