Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать объем памяти для данных? [D7, WinXP]


7D7 ©   (2006-10-24 21:15:00) 

Здрасте! Мастера, помогите пожалуйста решить маленькую проблему. В общем мне нужно узнать, каким образом можно найти общий объем памяти для данных, используемых каждой процедурой (описанных в ней).


Ketmar   (2006-10-26 23:29:00) [1]

>[18] 7D7 26-Oct-2006, 23:28
ты альтернативно одарённым себя пытаешься показать только здесь, или это беда всей жизни?


7D7   (2006-10-26 23:28:00) [2]

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 label1.Caption:=format('%p',[integer(@i)]);
end;
компилитругается, но при щелчке на кнопочку выбивает ошибку((. зато если вместо '%p' поставить'%x' то все ок!


7D7   (2006-10-26 23:11:00) [3]

снкс, щас буду пробовать


Leonid Troyanovsky   (2006-10-26 22:02:00) [4]


> Pavia ©   (26.10.06 21:57) [15]

> caption:=format('%x',[integer(@a[0])]);


format('%p', [@a]);

--
Regards, LVT.


Pavia   (2006-10-26 21:57:00) [5]

@A- получить адрес
caption:=format('%x',[integer(@a[0])]);


7D7   (2006-10-26 21:25:00) [6]

помню что то про массивы, например:

a[0] адрес его слота $A4B
a[1] $A4F
...
ну не помню(можно сказать незнаю) как находятся адреса переменных((. Хелп плз


7D7   (2006-10-26 21:17:00) [7]

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


Leonid Troyanovsky   (2006-10-26 19:18:00) [8]


> 7D7   (26.10.06 18:51) [11]

> А еще подскажите плз как провести анализ размещения данных
> в памяти с указанием их адресов?


VirtualQuery, msdn, нагуглить или почитать у Д. Рихтера.

--
Regards, LVT.


7D7   (2006-10-26 18:51:00) [9]

>> Вон тебе и формулы для расчета

эт совсем ни то что нужно((

А еще подскажите плз как провести анализ размещения данных в памяти с указанием их адресов?


DrPass   (2006-10-25 22:36:00) [10]


> 7D7   (25.10.06 22:14) [9]

Вон тебе и формулы для расчета
http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8


7D7   (2006-10-25 22:14:00) [11]

>>классическую лабу "сравнить методы

а вот и не угадал... это не лаба, а курсач))

>> ее исполняемым кодом или данными?

данными


DrPass   (2006-10-25 20:26:00) [12]


> 7D7   (25.10.06 19:47) [5]

Включая телепатор, рискну предположить - тебе задали классическую лабу "сравнить методы сортировки и указать для каждого метода количество перестановок и требуемое количество памяти".
Так вот, расслабься - ничего тебе от процедуры не нужно. Это чисто логическая задача. У тебя есть алгоритмы и моск. Включай моск и думай, сколько памяти нужно для того или иного алгоритма. Для Пузырька - N + 1, где N - число элементов в массиве


MetalFan   (2006-10-25 19:50:00) [13]

что значит "занимаемой процедурой"?
ее исполняемым кодом или данными? и зачем?


7D7   (2006-10-25 19:48:00) [14]

кстати вышеописаная процедура- сортировка методом Пузырька


7D7   (2006-10-25 19:47:00) [15]

>> не правильная постановка задачи

в общем так:

uses...
....
....
....
public (переменные вкатал сюда)
   Mas:Array[0..20] of Integer;
   Mas_A,Mas_B:Integer;
   I,K,Kol:Integer;
   Hag:Byte;
   Rang:Integer;
   Mem_Num:Integer;
   Buffer_Num:Integer;
 end


есть процедура
procedure TForm1.Timer1Timer(Sender: TObject);
Var K:Integer;
   Har_A,Har_B:Integer;
begin
For K:=0 to 20 do If Mas[K] = Mas[K+1] then Mas[K+1]:=Rang; {алгоритм случайно сгенерированых неповторяющихся чисел}

Buffer_Num:=-1;

////////////////////////
For K:=1 to Hag do begin                              {интервал перебора}
Sleep(80);                                 {Задержка для отображения сортировки}
Buffer_Num:=Buffer_Num+1;

Har_A:=Mas[Buffer_Num];
Har_B:=Mas[K];

If Har_A > Har_B then begin                   {Если шар А больше Б то сортируем}
Mem_Num:=Har_B;
Har_B:=Har_A;
Har_A:=Mem_Num;

Mas[Buffer_Num]:=Har_A;
Mas[K]:=Har_B;

Canvas.Pen.Color:=$0000FF;         {Задаем фон для отображения сортировки}
Canvas.Brush.Color:=$0000FF;
Move;
end;
Canvas.Pen.Color:=$0070FF;             {Основной фон отсортированных шаров}
Canvas.Brush.Color:=$0070FF;
Move;
end;
/////////////////////////
end;


как узнать занимаемый этой процедурой объем памяти?


Наиль   (2006-10-24 22:03:00) [16]

Так данных или процедуры?
Покажи на примере размер чего ты хочешь подсчитать.

PS. Очевидно, не правильная постановка задачи, а значит не получишь ни какого вразумительного ответа. Каков вопрос, таков ответ.


Суслик   (2006-10-24 22:02:00) [17]


> а как узнать выделяемый объем памяти для какой либо процедуры?

В CPU можно посмотреть - сколько забирается из стека.

Но не стоит забывать, что объем памяти, забираемый у ОС, зависит не только от твоих типов, но и от манагера памяти, который в разных версиях delphi разный.

------
имхо самый правильный путь - просто знать как типы устроены - это все есть в справке.


7D7   (2006-10-24 21:51:00) [18]

а как узнать выделяемый объем памяти для какой либо процедуры?


Desdechado   (2006-10-24 21:19:00) [19]

смотришь на типы своих переменнты, смотришь справку по типам, суммируешь

ЗЫ не забудь, что динамически выделяемая память может быть любой


Наверх

Титульная страница Поиск, карта сайта Написать письмо