ReportMemoryLeaksOnShutdown: Memory Leak em Delphi
28/09/2009
0
program Project1;
uses Forms, SysUtils, Unit1 in ´Unit1.pas´ ; {$R *.res} begin ReportMemoryLeaksOnShutdown := True; Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run; datetostr(date); end.
Da Memory Leak ??????? ReportMemoryLeaksOnShutdown
PQ ???
obs: Não tem nada no Form ... O Projeto esta Vazio , digamos assim
Marco Salles
Posts
28/09/2009
Osocram
Da a impressão que essa linha
datetostr(date);
acabou alocando o resultado em memoria em algum lugar, mais provavel que foi no ´limbo´.
E como antes de fechar o projeto tinha algo em memoria ele deu memory leak
28/09/2009
Marco Salles
uses Forms, SysUtils, Unit1 in ´Unit1.pas´ ; {$R *.res} begin ReportMemoryLeaksOnShutdown := True; datetostr(date); /////////////Colocando aqui oooo Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run; end.
28/09/2009
Afarias
o q exatamente esta linha de comando faz?? não parece fazer sentido algum
T+
28/09/2009
Marco Salles
Nenhum sentido ...
para quem quiser simular o erro , fica mais fácil
claro que meu dpr original é bem mais complexo . Mas fui depurando e no
gargalho cheguei a esta Instrução ... Então para facilitar a comunicação so
coloquei a instrução que esta dando Memory Leak para que outros atestem
e deem a opinião , simulando a experiencia em suas resptivas máquinas
28/09/2009
Afarias
VariavelString := DateToStr(Date);
??
T+
28/09/2009
Marco Salles
Showmessage .
program Project1; uses Forms, SysUtils, dialogs, Unit1 in ´Unit1.pas´ ; {$R *.res} var mens:String; begin ReportMemoryLeaksOnShutdown := True; mens:=Datetostr(date); Showmessage(mens); Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run; end.
Algume ja simulou este codigo no Delphi2007 ???
28/09/2009
Afarias
Isto teoricamente ocorre apenas para strings como variáveis globais atribuídas por funções (que retornam string). Exatamente o seu caso.
Entretanto isto não é um memory leak real. Com o encerramento do processo a memória será devolvida ao SO como parte do sistema de ´finalização´ do Delphi voltado para variáveis globais -- apenas que o gerenciador de memória (FastMM) não toma conhecimento, e assim reporta como memory leak
T+
28/09/2009
Afarias
Ela deve ser sempre a primeira da uses no DPR ou diversos memory leaks falsos são reportados.
Imagino q no D2007 a IDE/compilador inclua automaticamente mas, se não tiver certeza, coloque explicitamente.
Tb verifique se o seu Delphi/FastMM está atualizado.
T+
30/09/2019
Vinicius Silva
program Project1;
[code:1:fe11bf0dd5]uses
Forms,
SysUtils,
Unit1 in ´Unit1.pas´ ;
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
datetostr(date);
end.[/code:1:fe11bf0dd5]
Da Memory Leak ??????? ReportMemoryLeaksOnShutdown
PQ ???
obs: Não tem nada no Form ... O Projeto esta Vazio , digamos assim
Como fazer gravar o log com os memory leaks encontrados? Por que ativando o ReportMemory ele so exibe um dialog quando fecha a aplicação.
Clique aqui para fazer login e interagir na Comunidade :)