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