C++ DTOR 以释放_bstr_t内存

c++ dtor to free _bstr_t memory

本文关键字:bstr 内存 释放 DTOR C++      更新时间:2023-10-16

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

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

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

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

特别是对于_bstr_t,因为它通过SysAllocString分配一个字符串。

谢谢

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

由于_bstr_t有一个非平凡的析构函数,它负责调用SysFreeString()该析构函数将被调用并释放 BSTR。