Skip to content

Memory Leak no Indy Lazarus

Mobius One edited this page Sep 19, 2022 · 2 revisions

Home > Problemas Resolvidos > Memory leak no indy lazarus

Problema

No Lazarus, após fechar uma aplicação que utiliza o Indy, ocorrem memory leaks da IdStack e IdThread (normalmente).

Solução

A solução para esse problema foi extraída de uma publicação no fórum oficial do Lazarus e traduzida abaixo: https://forum.lazarus.freepascal.org/index.php/topic,14556.msg77086.html#msg77086

Olá a todos,

Identifiquei que o Indy 10 tem memory leaks já a algum tempo e imaginei como eliminá-los. Recentemente Remy Lebeau me disse que os memory leaks são deliberados mas que ao definir FREE_ON_FINAL e recompilar o Indy resolveria o problema.

Estes foram os passos que tomei:

a) Abrir o IdCompilerDefines.inc

b) Definir a diretiva FREE_ON_FINAL no arquivo como mostrado abaixo:

Antes:

// $DEFINE the following if the global objects in the IdStack and IdThread
// units should be freed on finalization
{.$DEFINE FREE_ON_FINAL}
{$UNDEF FREE_ON_FINAL}

Depois:

// $DEFINE the following if the global objects in the IdStack and IdThread
// units should be freed on finalization
{$DEFINE FREE_ON_FINAL}
{.$UNDEF FREE_ON_FINAL}

c) Recompile e reinstale Indy 10

Agora me sinto melhor, não gosto de pontas soltas :D Espero que mais alguém ache isso útil.

Clone this wiki locally