📜  crtdbg c++ (1)

📅  最后修改于: 2023-12-03 15:14:17.388000             🧑  作者: Mango

使用 CRTDBG C++ 进行调试

CRTDBG C++ 是 Microsoft Visual Studio 中的一种调试工具,可以用于检查内存泄漏和其他与内存相关的错误。本文将介绍如何使用 CRTDBG C++ 进行调试。

开启 CRTDBG

在 Visual Studio 中启用 CRTDBG 调试非常简单。只需按照以下步骤操作即可:

  1. 在 Visual Studio 中打开项目。

  2. 单击“调试”菜单,然后选择“以管理员身份运行”。

  3. 单击“调试”菜单,然后选择“Windows” → “输出”。

  4. 在输出窗口中,输入以下行:

    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
    

    这会启用内存泄漏检查。

检测内存泄漏

当您的应用程序结束时,如果存在任何内存泄漏,CRTDBG 将列出所有泄漏的块和它们的大小。这使您能够轻松地找到泄漏并修复它们。

以下是示例输出:

Detected memory leaks!
Dumping objects ->
{148} normal block at 0x00732950, 124 bytes long.
 Data: <                > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{147} normal block at 0x007327E0, 32 bytes long.
 Data: <B X|Y           > 42 BE 58 7C 92 B8 59 7C 00 00 00 00 00 00 00 00
Object dump complete.
检测堆损坏

CRTDBG 还可以检测堆损坏。这包括使用已释放的内存地址,写入已释放的内存等。

以下是示例输出:

HEAP CORRUPTION DETECTED: after Normal block (#35) at 0x00C96EC8.
CRT detected that the application wrote to memory after end of heap buffer.
总结

CRTDBG C++ 是 Microsoft Visual Studio 中非常有用的调试工具,可以帮助您检查内存泄漏和其他内存相关错误。使用本文中的步骤,您可以轻松地启用 CRTDBG 并开始调试您的应用程序。