Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何为TCriticalSection注册ExpectedMemoryLeak_Delphi_Memory Leaks_Delphi 2007 - Fatal编程技术网

Delphi 如何为TCriticalSection注册ExpectedMemoryLeak

Delphi 如何为TCriticalSection注册ExpectedMemoryLeak,delphi,memory-leaks,delphi-2007,Delphi,Memory Leaks,Delphi 2007,这也许很简单。如何在D2007中向Indy9注册TCriticalSection的memleak? 我没有找到任何例子 编辑: 谢谢雷米的回复,但这对我不起作用。在Indy9目录中,我将IdComponent.pas从 initialization GStackCriticalSection := TCriticalSection.Create; finalization // Dont Free. If shutdown is from another Init section, it

这也许很简单。如何在D2007中向Indy9注册TCriticalSection的memleak? 我没有找到任何例子

编辑: 谢谢雷米的回复,但这对我不起作用。在Indy9目录中,我将IdComponent.pas从

initialization
  GStackCriticalSection := TCriticalSection.Create;
finalization
  // Dont Free. If shutdown is from another Init section, it can cause GPF when stack
  // tries to access it. App will kill it off anyways, so just let it leak
  // FreeAndNil(GStackCriticalSection);


和以前一样的泄漏。我可以在TCriticalSection.Create上设置一个断点,这样我就知道代码实际执行了。但奇怪的是,如果我在FastMM的RegisterExpectedMemoryLeak上设置断点,它永远不会到达。

只需像任何其他参数一样,将
TCriticalSection
对象指针传递到
RegisterExpectedMemoryLeak()

var
  CS: TCriticalSection;
...
RegisterExpectedMemoryLeak(CS);
只需确保在注册之前已实例化了
TCriticalSection

或者,您可以升级到Indy 10,它已经为您注册了有意泄漏(或者您可以在IdCompilerDefines.inc中定义
FREE\u ON\u FINAL
,以禁用泄漏-执行此操作之前,请阅读IdStack.pas和IdThread.pas底部的注释)

var
  CS: TCriticalSection;
...
RegisterExpectedMemoryLeak(CS);