_CrtMemDifference

比较两个内存状态并将其返回的差异 (请只调试版本)。

int _CrtMemDifference( 
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState 
);

参数

  • stateDiff
    用于存储两个内存状态之间的差异的 _CrtMemState 结构的指针 (返回)。

  • oldState
    为前面的内存状态 (_CrtMemState 结构) 的指针。

  • newState
    对较高内存状态 (_CrtMemState 结构) 的指针。

返回值

如果内存状态最大, _CrtMemDifference 返回 TRUE。 否则,该函数返回错误。

备注

_CrtMemDifference 函数在 stateDiff比较 oldState 和 newState 并将其存储的差异,能由应用程序检测内存泄漏和其他内存问题并使用。 当 _DEBUG 未定义时,在预处理期间,对 _CrtMemDifference 中移除。

newState 和 oldState 必须每个都是有效的指针。 _CrtMemState 结构,定义在 Crtdbg.h,即在调用 _CrtMemDifference之前的 _CrtMemCheckpoint 填充的。 stateDiff 必须是指向 _CrtMemState 结构的以前指定的实例。 如果 stateDiff、 newState或 oldState 是 NULL,无效参数调用处理程序,如 参数验证所述。 如果执行允许继续, errno、_doserrno、_sys_errlist和_sys_nerr 设置为 EINVAL ,函数返回 false。

_CrtMemDifference 在 oldState 在 stateDiff比较 _CrtMemState 字段值的块。这些在 newState 并存储结果。 当数字的分配块类型或总数的分配每个块类型不同于两个内存状态之间,状态被视为显着的不同。 为两个状态立即分配的巨额之间的差异以及总分配之间的差异两个状态之间在 stateDiff还存储。

默认情况下,内部 C 运行时在内存状态操作块 (_CRT_BLOCK) 不包括。 _CrtSetDbgFlag 功能在泄漏检测和其他内存状态操作可用于将 _CRTDBG_CHECK_CRT_DF_crtDbgFlag 置包括这些块。 已释放的内存块 (_FREE_BLOCK) 不会导致 _CrtMemDifference 返回 TRUE。

有关堆态函数和 _CrtMemState framework 的更多信息,请参见 堆状态报告函数。 有关如何的信息存储在基堆的调试版本中分配,初始化,并管理,请参见 内存管理和调试堆

要求

实例

必需的头

可选标头

_CrtMemDifference

crtdbg.h

errno.h

有关更多兼容性信息,请参见中介绍的 兼容性

库: 只调试 CRT库功能 的版本。

示例

请参见 crt_dbg1

.NET Framework 等效项

不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例

请参见

参考

调试实例

_crtDbgFlag