Share via


_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。有关详细信息,请参见平台调用示例

请参见

参考

调试例程

_CrtSetDbgFlag

_CrtReportBlockType

其他资源

堆状态报告函数