gpt4 book ai didi

c++ - 使用VS Code在C++应用程序中查找内存泄漏

转载 作者:行者123 更新时间:2023-12-04 14:46:28 26 4
gpt4 key购买 nike

有没有一种方法可以使用Visual Studio Code在C++应用程序中显示内存泄漏报告?

也许某个图书馆?扩展吗?使用MinGW编译器?

我正在Windows 10上使用Visual Studio Code(1.41.1)和C++扩展(0.26.3)。
我已经用Configure VS Code for Microsoft C++编写的MSVC编译器工具集(2019)配置了VS Code。
但是,我无法使用Find memory leaks with the CRT library编写的CRT库显示内存泄漏。
我的简单示例代码:

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <iostream>

int main() {
printf("Hello world!\n");

int *a = new int;
*a = 8;
//delete a;

_CrtDumpMemoryLeaks();
return 0;
}

使用此代码,我看不到 _CrtDumpMemoryLeaks()生成的任何报告。
调试代码时,似乎编译器会完全跳过 _CrtDumpMemoryLeaks();行。
难道我做错了什么?
我尝试过使用 _DEBUG=1 define更改配置,但是编译器甚至跳过了 #ifdef _DEBUG语句。

最佳答案

似乎您可以通过在项目的"/MDd"文件夹内的"/MTd"文件的args数组中添加编译器选项tasks.json.vscode(没有任何第三方应用程序或工具),而在使用MSVC的VS Code C++应用程序中找到内存泄漏。
像这样的东西:

"args": [
"/Zi", // Generates complete debugging information
"/MDd", // Use /MDd or /MTd to define _DEBUG and allow _CrtDumpMemoryLeaks()
"/EHsc", // Specifies the model of exception handling - mode 'sc'
"/Fe:", // Renames the executable file
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],

这基本上启用了 Find memory leaks with the CRT library中列出的所有内容
然后,在运行程序时, _CrtDumpMemoryLeaks()检测到内存泄漏并在 DEBUG CONSOLE中显示它们:
Detected memory leaks!
Dumping objects ->
{113} normal block at 0x015C8460, 4 bytes long.
Data: < > 08 00 00 00
Object dump complete.

最后,您可以将大括号内的数字输入 _CrtSetBreakAlloc(113)命令中,以创建一个内存分配断点,以查找您忘记删除的变量。

关于c++ - 使用VS Code在C++应用程序中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59920063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com