Форум: "Основная";
Текущий архив: 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