必须在 TRegEx.Create 之后释放 TRegEx 对象吗?

Must free TRegEx object after TRegEx.Create?

我在 Delphi 10.1.2 中看到了几个 Delphi TRegEx 用法示例,如下所示:

try
  RegexObj := TRegEx.Create(REGEX_EXTRACTEMAILADDRESSES, [roIgnoreCase]); 
  MatchResults := RegexObj.Match(ThisPageText);
  while MatchResults.Success do
  begin
    slEmailAddressesOnThisPage.Add(MatchResults.Value);
    MatchResults := MatchResults.NextMatch();
  end;
except
  on E: ERegularExpressionError do
  begin
    // Todo: Log Syntax error in the regular expression
  end;
end;

所以我想知道在这样的例子中 TRegEx 对象是否必须在创建后显式释放?

只有 class 个派生自 TObject 的对象必须在创建后显式地从内存中释放。 TRegExrecord ,所以它在超出范围时被释放。 TRegEx.Create 是一个构造函数,但不是在堆上创建新对象的构造函数,只是在调用堆栈上,因此无需手动释放任何内容(没有为其定义析构函数)。