delphi - FastMM:如何为所有 unicode 或 ansi 字符串注册预期内存泄漏?
问题描述
有三个函数可以在 fastmm 中注册预期的内存泄漏:
function FastMM_RegisterExpectedMemoryLeak(ALeakedPointer: Pointer): Boolean; overload;
function FastMM_RegisterExpectedMemoryLeak(ALeakedObjectClass: TClass; ACount: Integer = 1): Boolean; overload;
function FastMM_RegisterExpectedMemoryLeak(ALeakedBlockSize: NativeInt; ACount: Integer = 1): Boolean; overload;
但它们不适用于字符串类型。任何想法 ?
解决方案
您可以将这些泄漏注册为通用泄漏,使用
function FastMM_RegisterExpectedMemoryLeak(ALeakedBlockSize: NativeInt; ACount: Integer = 1): Boolean; overload;
这是一个例子:
program StringLeakDemo;
{$APPTYPE CONSOLE}
uses
FastMM5,
System.SysUtils;
const Leakee = 'string which leaks';
var Z: ^String;
begin
FastMM_MessageBoxEvents := [Low(TFastMM_MemoryManagerEventType) .. High(TFastMM_MemoryManagerEventType)];
FastMM_RegisterExpectedMemoryLeak(32 + Length(Leakee), 1);
GetMem(Z, SizeOf(string));
Z^ := Leakee;
FreeMem(Z);
end.
推荐阅读
- linux - 如何在全局偏移表中获取绝对虚拟地址
- vaadin14 - 计算网格高度时的样式网格边框
- terraform - Terraform - VSphere - 找不到访客 ID“otherGuest”的操作系统系列:无权限
- java - Java:声明的包“substitution_ciphers”与预期的包“”不匹配。VSCode
- flutter - 长按时增加计数器更快,但在颤振延迟之后
- javascript - 如何渲染滚动百分比的实际值?
- python - 使用 python 和 linux 对主机进行多次 ping
- python - Flask SQLAlchemy backref 使用 3 个表
- file - 使用响应式文件管理器 9.14.0 上传文件时出错
- pyaudio - PyAudio + snd-aloop 子设备索引选项 + asoundrc