このクラス ctor はメモリ リークを起こしています。何が起こっているのかわかりません。どのように私は知っていますか?ctor の 2 行目をコメントアウトすると、リークはなくなります。
template< class T, int fixedSize >
class Resource_Cache{
private:
ID3D11Device * m_pDeviceRef; // the one that actually can create stuff
UINT m_iCurrentIndex; // next slot to be allocated, also the ID of the resources
//UINT m_nFreedSlots; // how many freed slot there are?
T* m_cache[fixedSize]; // the container per se
struct SlotInfo{
UINT nUseCount;
Resource_Descriptor<T> desc;
} m_slotsInfo[fixedSize];//use a hashtable<desc,index on m_cache>;
Resource_Cache(); //denied default ctor
public:
Resource_Cache( ID3D11Device * pDevice_p ): m_pDeviceRef(pDevice_p), m_iCurrentIndex(0){
memset(m_cache, NULL, fixedSize*sizeof(T*));
memset( m_slotsInfo, 0, fixedSize*sizeof(SlotInfo)); // zero slotsInfo memory(CAUSING LEAKS)
}
...
単純なことかもしれませんが、私は無知です..
- 編集して答える - PermanentGuestが言ったように:いいえ。基本型には問題はありません。ただし、Resource_Descriptor の型 T に memset によってコンストラクター (文字列など) にメモリを割り当てる実装がある場合、そのクラスの内部ポインターを NULL にリセットすることになり、そのデストラクタがメモリを削除する機会を拒否します。– PermanentGuest
std::string が問題で、解決しました。