c++内存泄漏新操作符
C++ Memory Leak new operator
我需要确定哪些对象被销毁,以及这段代码是否有内存泄漏。
void myfunc()
{
Photo a(1, 2);
Photo* pt = new Photo(2, 3);
throw runtime_error("to test the exception");
}
我的答案是
对象在函数结束后销毁,通过自动调用Photo类的析构函数。
存在内存泄漏。我们没有删除用new操作符动态分配的pt。所以我们需要加上delete pt;函数结束
我的答案正确吗?
你错了。试试这个:
void myfunc()
{
Photo a(1, 2);
Photo* pt = new Photo(2, 3);
throw runtime_error("to test the exception");
delete pt;
}
编译并在valgrind下运行。您将得到一个泄漏- delete pt;
永远不会到达。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- Klocwork Inside的资源泄漏
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- c++中不使用new操作符的内存泄漏
- c++内存泄漏新操作符
- 重载操作符内存泄漏=
- 使用操作符删除动态但仍然存在的内存泄漏
- 导致内存泄漏的c++ post操作符
- 赋值操作符内存泄漏