0

这是一个非常基本的 C++ 问题,只是想在我犯错之前先确认一下。

我有一个obj如下结构:

struct obj
{
  BSTR str;
}

在一个函数foo中,我初始化了 a cComObject<obj> ex,并为 str 分配了内存。
然后,在函数中foo,我调用bar(ex)了函数(带有变量ex)。

在这种情况下,我是否需要ex.str在函数中释放bar以避免堆泄漏?

谢谢

4

1 回答 1

1

好吧,有人将不得不释放它BSTR以避免内存泄漏。可能是bar,也可能是退货foo后。只是一个指针,是.barBSTRwchar_t*

请注意,您通常不会CComObject按值传递 around 的实例。CComObject旨在在堆上分配,并使用引用计数来管理其生命周期,通过AddRefRelease. 此外,CComObject<C>期望CCComObjectRoot. 你的obj类不是那么派生的。

于 2013-07-26T22:58:17.770 回答