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

Вниз

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

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

Наверх




Память: 0.49 MB
Время: 0.049 c
1-1162226777
Master_
2006-10-30 19:46
2006.12.10
Работа с MIDI в Delphi


2-1163780397
Calibr
2006-11-17 19:19
2006.12.10
График


15-1163791183
TUser
2006-11-17 22:19
2006.12.10
Не хочу сразу ругаться


4-1153835150
Kolan
2006-07-25 17:45
2006.12.10
Работа с TApdComPort(Async Professional) и с RS485...


15-1164201013
Тульский
2006-11-22 16:10
2006.12.10
Победить глюк №2328 в Windows 2000 Server (SP3)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский