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

Вниз

Как узнать объем памяти для данных?   Найти похожие ветки 

 
7D7   (2006-10-24 21:15) [0]

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


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

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

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


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

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


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


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

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

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

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


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

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

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


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

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

в общем так:

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;


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


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

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


 
MetalFan ©   (2006-10-25 19:50) [7]

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


 
DrPass ©   (2006-10-25 20:26) [8]


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

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


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

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

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

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

данными


 
DrPass ©   (2006-10-25 22:36) [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-26 18:51) [11]

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

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

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


 
Leonid Troyanovsky ©   (2006-10-26 19:18) [12]


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

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


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

--
Regards, LVT.


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

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


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

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

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


 
Pavia ©   (2006-10-26 21:57) [15]

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


 
Leonid Troyanovsky ©   (2006-10-26 22:02) [16]


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

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


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

--
Regards, LVT.


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

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


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

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


 
Ketmar ©   (2006-10-26 23:29) [19]

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



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

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

Наверх




Память: 0.51 MB
Время: 0.027 c
2-1164247598
uleess
2006-11-23 05:06
2006.12.10
Необходим дозвоньшик в интернет уневерсальный! Для Win98 и WinXP


3-1160124844
snake767
2006-10-06 12:54
2006.12.10
Удалить одинаковые записи в FireBird


2-1164382085
redlord
2006-11-24 18:28
2006.12.10
переворот BITMAPa на 180"


15-1164049823
ArtemESC
2006-11-20 22:10
2006.12.10
Как найти человека в Московской Области?


2-1164206856
KyRo
2006-11-22 17:47
2006.12.10
Не могу удалить директорию