memoryCounter
クラスによって引き起こされたメモリ リークをキャッチしようとするというクラスがあるとしMyClass
ます。
class memoryCounter
{
public:
static int MyClassCount;
};
int memoryCounter::MyClassCount = 0;
また、次の行をコンストラクタとデストラクタ(およびコンストラクタ/デストラクタ以外MyClass
の場所を変更しないと仮定して、それが持つ他のコンストラクタ) に配置するとします。MyClassCount
MyClass()
{
memoryCounter::MyClassCount++;
}
virtual ~MyClass()
{
memoryCounter::MyClassCount--;
}
さて、含まれているものがゼロの場合、これまでに割り当てたすべてのメモリが解放され、リークがないことを完全に確信できますか? memoryCounter::MyClassCount
または、変数にゼロが含まれているが、解放されていないメモリが割り当てられているという状況が発生する可能性があります (「MyClass」が基本クラスまたは派生クラスである状況も考慮してください)。