我想使用Visual Studio 22来检测一个简单的内存泄漏问题。我正在使用C++语言。
我正在使用带有优化设置为
我在导致内存泄漏的那行代码周围设置了两个断点。我正在运行调试器,并在泄漏之前和之后对堆进行快照。根据我的理解,当我触发第二个断点时,应该看到堆的增加。但实际上并没有。
为什么我的内存泄漏没有被检测到?
#include <iostream>
void leak(const unsigned numBytesToLeak)
{
new char[numBytesToLeak];
}
int main()
{
std::cout << "before" << std::endl; // breakpoint 1
leak(646497);
std::cout << "after" << std::endl; // breakpoint 2
}
我正在使用带有优化设置为
/Od
(关闭)的Debug
构建。
我在导致内存泄漏的那行代码周围设置了两个断点。我正在运行调试器,并在泄漏之前和之后对堆进行快照。根据我的理解,当我触发第二个断点时,应该看到堆的增加。但实际上并没有。
为什么我的内存泄漏没有被检测到?
new
最终会调用一个库函数,而编译器并不决定是否分配真实的内存空间。 - 273K