Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
ВнизОчистка памяти от массива экземпляров класса Найти похожие ветки
← →
Rembo (2009-05-29 07:45) [0]Есть статич. массив экзмепляров класса.
Заполняю так:
for i:=1 to elemscount do arr[i]:=TMyClass.Create;
Очищаю так:
for i:=1 to elemscount do arr[i].free;
где elemscount - количество эелементов, arr:array[1..6000] of TMyClass;
Сделал 2 кнопки заполнить, очистить
В дисспетчере задач вижу что при последовательных нажатиях "заполнить", "очистить" программа начинает исспользовать все больше памяти а не должна!
Что не так?
← →
Сергей М. © (2009-05-29 08:23) [1]Конструктор и деструктор класса пустые ?
← →
Vitaliy_____ (2009-05-29 09:02) [2]Скорей всего моя проблема - у класса не так деструктор сделан, прочитай ветку
http://delphimaster.net/view/2-1242878656/
← →
Сергей М. © (2009-05-29 09:07) [3]Ну и зачем нужно было заводить еще одну ветку, да и еще и с партизанщиной ?
← →
Ega23 © (2009-05-29 10:22) [4]
> Скорей всего моя проблема - у класса не так деструктор сделан,
> прочитай ветку
Тебе уже вроде всё объяснили....
← →
Rembo (2009-05-29 10:24) [5]Какая партизанщина? Вы за кого меня держите!
Конструктор и деструктор пустые да, че писать в дуструктор не знаю. Вот описание классов:TSprite = class
x,y,width,height,animpos,framewidthu:Integer;
v1,v2,v3,v4:TMPoint;
txhor,txvert,texcol,texpos:Single;
presed,visible,useantiallising,usealpha:Boolean;
angle,radius:Real;
alpha:Byte;
actionproc:procedure;
procedure send;
procedure sendvs;
procedure sendin(ix,iy:integer);
procedure linesend(fp:TPoint);
function getrect:TRect;
procedure render;
procedure init(texname:byte;framecount,framewidth:integer);
private
tex:byte;
texsize:Word;
framenum:Byte;
end;
TMyClass=class(TSprite)
deathtime:LongWord;
hp,maxhp,gcost:integer;
dead:Boolean;
gbarw:Byte;
movex,movey,row,col:integer;
speed:Single;
onmove:Boolean;
sx,sy:Single;
step:word;
rnd:Byte;
path:array[1..1000] of TPoint;
procedure moveto(mcol,mrow:byte);
end;
Непойму че ваще можно написать в деструкторе, или просто он должен быть
destructor TSprite.destroy;
begin
....
inherited;
end;
формальность так сказать?
← →
Rembo (2009-05-29 10:25) [6]Упс!
TSprite = class(Object)
исправил, проблема осталась
← →
brother © (2009-05-29 10:26) [7]> формальность так сказать?
нет конечно, этим ты вызывашь деструктор предка, что требуется всегда
← →
brother © (2009-05-29 10:28) [8]> TSprite = class
> TSprite = class(Object)
одинаково
← →
brother © (2009-05-29 10:30) [9]> Сделал 2 кнопки заполнить, очистить
код давай
зы такой ООП в топку имхо
← →
Сергей М. © (2009-05-29 10:37) [10]
> Rembo (29.05.09 10:24) [5]
Пардон, Vitaliy_____ (29.05.09 09:02) [2] влез в тему так что показалось, что он и ты - одна и та же персона)
> Конструктор и деструктор пустые
Тогда есть сомнения, что приведенный изначально код соответствует реальному.
Судя по нему и по коду в [5] утечек быть не должно, даже если TaskManager будет бессовестно врать по этому поводу.
После десятка этих последовательных нажатий попробуй свернуть/переключить фокус ввода.вернуть фокус ввода/развернуть окно формы - NaskManager должен показать истину.
← →
Rembo (2009-05-29 10:39) [11]Нашел проблему:
Очистка:
elemscount:=0;
for i:=1 to elemscount do arr[i].free;
← →
Dennis I. Komarov © (2009-05-29 10:43) [12]Крутые перцы считают с "0", а не с "1" ;)
а перед тем, как пойти в цикл проверяют есть ли чего считать:if ElementCount>0 then
for i:=0 to ElementCount-1 do
← →
Ega23 © (2009-05-29 10:48) [13]
> if ElementCount>0 then
> for i:=0 to ElementCount-1 do
Проверка не нужна. Достаточноfor i:=0 to ElementCount-1 do
← →
Юрий Зотов © (2009-05-29 10:49) [14]> Dennis I. Komarov © (29.05.09 10:43) [12]
В таких случаях крутые перцы не проверяют есть ли чего считать. Цикл сам все проверит.
← →
brother © (2009-05-29 11:01) [15]> Цикл сам все проверит.
он еще круче, чем те перцы ;)
← →
Плохиш © (2009-05-29 13:39) [16]
> Dennis I. Komarov © (29.05.09 10:43) [12]
>
>
> Ega23 © (29.05.09 10:48) [13]
>
>
Не надо пороть ерунды, а стоит ещё раз прочитать вопрос [0], в частности описание массива ;-)
← →
Dennis I. Komarov © (2009-05-29 13:42) [17]
> Не надо пороть ерунды, а стоит ещё раз прочитать вопрос
> [0], в частности описание массива ;-)
Я видел описание - смайлы смотрите...
← →
Anatoly Podgoretsky © (2009-05-29 17:56) [18]Типичный Партизан!
← →
Vitaliy_____ (2009-06-18 13:25) [19]Анатолий, Вы не правы :)
Калибруйте телепаторы! Сергей М. [10] все правильно написал. Это не мой вопрос. Я просто как всегда коряво написал.
Эх, иногда лучше молчать, чем говорить :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c