_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 类型以及其他调试函数如何使用它的详细信息,请参阅调试堆中的块类型。 有关如何在基堆的调试版本中分配、初始化和管理内存块的信息,请参阅 CRT 调试堆详细信息。
如果 pfn 为 NULL,则调用的参数处理程序无效,如参数验证中所述。 如果允许执行继续,则将 errno、_doserrno、_sys_errlist 和 _sys_nerr 设置为 EINVAL 并返回该函数。
要求
例程 |
必需的标头 |
---|---|
_CrtDoForAllClientObjects |
<crtdbg.h>,<errno.h> |
有关更多兼容性信息,请参阅“简介”中的兼容性。
**库:**仅限 CRT 库功能 的调试版本。
示例
请参见dfacobjs。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关详细信息,请参见平台调用示例。