gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:47:20 28 4
gpt4 key购买 nike

我见过几个 TRegEx 使用的 Delphi 示例,例如 Delphi 10.1.2 中的以下示例:

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 对象在创建后是否必须显式释放?

最佳答案

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

关于regex - TRegEx.Create 之后必须释放 TRegEx 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644131/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com