我想在控制台应用程序中显示内存泄漏但是在使用ExitProcess(0)
时它没有显示它们,没有它我不知道如何退出应用程序。
这是创建内存泄漏但未显示内存泄漏的代码示例:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
sysutils, classes, windows;
function Test: Boolean;
var
test : TStringList;
begin
test := TStringList.Create;
ExitProcess(0);
end;
begin
try
ReportMemoryLeaksOnShutdown := true;
Test;
except
on E: Exception do
begin
Writeln(E.ClassName, ': ', E.Message);
REadln;
end;
end;
end.
要查看内存泄漏,我从cmd执行exe。现在,如果我发表评论ExitProcess
我可以看到它们但是我不能。有没有修复?
答案 0 :(得分:0)
class PurchaseOrderApprover(BaseModel):
purchase_order = models.ForeignKey(PurchaseOrder, related_name='purchase_order_approvers', on_delete=models.CASCADE)
approver = models.ForeignKey(User, on_delete=models.PROTECT)
is_approved = models.BooleanField(default=False)
退出调用进程。就过程而言,功能甚至不返回。因此,内存管理器无法找到扫描和报告内存泄漏的机会。
您必须使用其他方式退出应用程序。你可以使用ExitProcess
,或者在函数中引发一个异常,或者从函数中返回一些东西,告诉主程序它会退出。