智能指针一般来说很好使,但特定的时候还是需要注意一下,否则内存还是不易释放掉。
1. 两个COM类A和B,各自存放了一个智能指针指向对方的某个接口。如果没有特别释放。也就是相互引用,结果最后谁也释放不了。
所以说在某个特定的地方最少对其中一个类的指针进行清空,才可以释放所有内存。
2. 静态类里的智能指针一般不会自动释放,因为静态变量的析构一般是DLL释放的时候才析构,存放的指针指向的函数所在的DLL可能已经释放掉了,等于野指针了,release不起作用,甚至出错。 所以也需要在程序结束而在DLL释放前进行清空。
3. ....