如果我有以下内容:
ID3D11Buffer **buffers; //ID3D11Buffer is a com object
buffers=new ID3D11Buffer* [num];
然后,如果我这样做:
delete[] buffers;
是否会自动调用每个Release()
的{{1}}方法,还是我必须自己调用它?< / p>
答案 0 :(得分:9)
在数组上调用delete
将破坏数组的每个元素。但由于每个元素都是一个POD哑指针,因此破坏它不会做任何事情。如果您希望自动释放COM对象,则应使用智能指针,例如_com_ptr_t或CComPtr。
答案 1 :(得分:8)
所有delete[] buffers;
将释放包含指向COM对象的指针的数组。您需要手动遍历数组并Release()
每个数组。