_CrtDoForAllClientObjects
为堆中的所有 _CLIENT_BLOCK
类型调用应用程序提供的函数(仅限调试版本)。
语法
void _CrtDoForAllClientObjects(
void ( * pfn )( void *, void * ),
void *context
);
参数
pfn
指向应用程序提供的函数回调函数的指针。 此函数的第一个参数指向数据。 第二个参数是传递给对 _CrtDoForAllClientObjects
的调用的上下文指针。
context
指向要传递给应用程序提供的函数的应用程序提供的上下文的指针。
注解
_CrtDoForAllClientObjects
在堆链接列表中搜索具有 _CLIENT_BLOCK
类型的内存块,当找到此类型的块时,将调用应用程序提供的函数。 找到的块和 context
参数将作为参数传递给应用程序提供的函数。 在调试过程中,应用程序可以通过显式调用调试堆函数以分配内存并指定向块分配 _CLIENT_BLOCK
块类型,来跟踪一组特定分配。 然后,可以在泄露检测和内存状态报告期间,单独跟踪并分别报告这些块。
如果未启用 _crtDbgFlag
标志的 _CRTDBG_ALLOC_MEM_DF
位域,会立即返回 _CrtDoForAllClientObjects
。 未定义 _DEBUG
时,会在预处理过程中删除对 _CrtDoForAllClientObjects
的调用。
有关 _CLIENT_BLOCK
类型以及其他调试函数如何使用它的详细信息,请参阅 Types of blocks on the debug heap的调用的上下文指针。 若要了解如何在基堆的调试版本中分配、初始化和管理内存块,请参阅 CRT 调试堆详细信息。
如果 pfn
为 NULL
,则会调用无效的参数处理程序,如参数验证中所述。 如果允许继续执行,则将 、errno
、_doserrno
、_sys_errlist
和 _sys_nerr
设置为 EINVAL
,并且会返回函数。
要求
例程 | 必需的标头 |
---|---|
_CrtDoForAllClientObjects |
<crtdbg.h>、<errno.h> |
有关兼容性的详细信息,请参阅 兼容性。
库:仅限通用 C 运行时库的调试版本。