我不是编程新手,而是 C++ 新手。我发现当我玩这种语言并与之互动时,我学得更好。所以我发现的一件很酷的事情是如何让 Visual Studio 通过以下方式提醒您程序中的任何内存泄漏:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
然后打电话
_CrtDumpMemoryLeaks();
在程序退出并将所有内存泄漏打印到输出窗口之前,太棒了!
我的问题是
- 发现内存泄漏后是否需要重新启动 Visual Studio 2012?
- 我需要重新启动计算机吗?
- 这些东西会泄露多久?还是 Windows 在执行结束时清理所有内存?如果这是真的,那么在 Visual Studio 中以“调试模式”运行程序是否仍然如此?
是的,我知道我真的应该使用智能指针,如shared_ptr
,unique_ptr
等,但我这样做是为了学习。这不是一个“真正的”应用程序,只是沙盒测试!
另外,这种查找内存泄漏的方法_CrtDumpMemoryLeaks ()
是否存在无法准确找到泄漏的情况?这似乎是一个了不起的工具!