r.k*_*.kr 4 c++ memory windows memory-leaks
我创建了一个示例应用程序,如下所示.我需要创建1024*1024结构.在调用new
操作符之前,我的应用程序正在消耗一些内存(比如0.3mb).调用新运算符后,内存增加(比如175mb).在调用delete
操作符后,内存减少(比如15mb).所以最后存在差异.我从任务管理器中观察了所有这些内存细节.我很困惑它是否应该被视为内存泄漏,还是内存缓慢释放?如果没有,我如何释放剩余的记忆?
struct testSt
{
bool check;
std::string testString;
};
int main()
{
testSt *testObj = new testSt[1024 * 1024];
delete[] testObj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您的应用程序中肯定没有内存泄漏.分配之前和之后的数字似乎不匹配的原因是,为了检测C++程序中的内存泄漏,任务管理器工具是粗略的.它不是记录代码的内存使用情况,而是记录执行代码的进程的所有内存使用情况,包括支持代码操作的标准C++库使用的任何内存.
使用内存分析器(如valgrind)来测试代码是否存在内存泄漏.
另外,请考虑切换用于制作容器的原始指针.到目前为止,减少内存泄漏可能性的最佳方法是使用标准C++库中的容器自动执行内存管理.在您的情况下,定义一个向量
std::vector<testSt> testObj(1024*1024);
Run Code Online (Sandbox Code Playgroud)
会让你完全避免分配和解除分配.
归档时间: |
|
查看次数: |
136 次 |
最近记录: |