【发布时间】:2013-06-24 15:12:19
【问题描述】:
Record* MyClass::get_record (int id)
{
Record* rec = new Record();
Record* compressed_rec;
/* ... code that gets compressed_rec into memory ... */
compressed_rec->decompress(rec);
return rec;
}
这个函数总是这样使用的:
Record* rec = my_class_instance.get_record (id);
show_contents_of(rec);
delete rec;
valgrind 说我在第一行 (Record* rec = new Record();) 泄漏了内存。为什么?
【问题讨论】:
-
被截断的代码是什么?
-
要么是误报,要么泄漏在其他地方。
-
关于内存泄漏,我相信 valgrind,并说您有一个不会删除内存的代码路径(例如通过异常)。由于缺少这么多代码,我们只能猜测。并想知道为什么不使用智能指针,这可能会解决问题......
-
@hmjd,我编辑了帖子。
-
hm 你的compressed_rec 指针怎么了?它是否在某处被释放:-)?
标签: c++ memory-leaks valgrind