Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2010, 09:55   #1
Juffin
Форумчянин
Форумчанин
 
Аватар для Juffin
 
Регистрация: 05.04.2009
Сообщений: 446
По умолчанию Утечка памяти

Есть кусок кода:
Код:
type TPhysPoint=class
       public
       X,Y:real;
       procedure SetPoint(inX,inY:real);
       end;

type TPhysRect=class
       public
       P1:TPhysPoint;
       Width,Height:integer;
       end;

function SetPoint(X,Y:real):TPhysPoint;

procedure Test(P:TPhysPoint);

implementation

procedure TPhysPoint.SetPoint(inX,inY:real);
begin
X:=inX;
Y:=inY;
end;

function SetPoint(X,Y:real):TPhysPoint;
var p:TPhysPoint;
begin
p:=TPhysPoint.Create;
p.SetPoint(X,Y);
SetPoint:=p;
end;
при таком вызове фенкции Test:
Код:
Test(SetPoint(2,3));
происходит утечка памяти (становится заметной в диспетчере задач после выполнения этой процедуры несколько тысяч раз). Как избежать этого, оставив функцию SetPoint():TPhysPoint?
Nobody expects Spanish Inquisition!
Juffin вне форума Ответить с цитированием
Старый 01.11.2010, 10:05   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
procedure Test(P:TPhysPoint);
Дальше догадайся сам что написано? По идеи, вы не удаляете TPhysPoint полученный от вызова SetPoint, но это уже мои телепатические возможности.
BOBAH13 вне форума Ответить с цитированием
Старый 01.11.2010, 13:15   #3
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Код:
p:=TPhysPoint.Create;
а где
Код:
p.Free;
?????
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 02.11.2010, 12:11   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ищем утечки памяти (часть 2).

Как несложно сообразить, если в программе есть действие по выделению ресурса (в вашем случае - TPhysPoint.Create), то где-то должно быть обратное действие по удалению ресурса.

Рекомендую подучить мат-часть.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечка памяти ZvEr_HaCkEr Свободное общение 13 24.09.2010 19:30
Indy в потоке - утечка памяти PUH Фриланс 5 28.12.2009 14:06
Indy в потоке - утечка памяти PUH Помощь студентам 0 25.12.2009 12:27
утечка памяти в С++ vengo Общие вопросы C/C++ 9 10.06.2008 21:24
DrawState - утечка памяти? unnamed Win Api 2 11.04.2007 18:36