【问题标题】:c++ dtor to free _bstr_t memoryc++ dtor释放_bstr_t内存
【发布时间】:2011-05-20 08:09:51
【问题描述】:

一个简单的问题,但我不确定它在 C++ 中做了什么。

当我有一个具有 _bstr_t 成员的类时。 我想知道删除对象时是否释放了成员:

class A {
    _bstr_t foo("Testing");
}

A 类没有 dtor。那么默认的 dtor 是调用类 A 的每个成员的 dtor 吗?

尤其是 _bstr_t 因为它通过 SysAllocString 分配一个字符串。

谢谢

【问题讨论】:

    标签: c++ bstr


    【解决方案1】:

    是的,_bstr_t 析构函数将被调用——编译器会处理这个问题。即使它没有用户定义的析构函数,编译器也会发出代码,通过调用它们的析构函数来销毁所有完全构造的子对象。

    由于_bstr_t 有一个重要的析构函数负责调用SysFreeString(),因此将调用析构函数并释放BSTR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2011-12-27
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2021-12-07
      相关资源
      最近更新 更多