非常に大規模なアプリケーションでリストを表すクラスがあります。
CSMLNode
{
CSMLNode *pChild;
CSMLNode *pSibling;
CSMLNode()
{
pChild = NULL;
pSibling = NULL;
}
}
最適化のために、作成されたノードオブジェクトはプールに保持され、アプリケーションの存続期間にわたって再利用されます。ノードオブジェクトの数が特定の数を超えた場合にのみ、ノードオブジェクトが解放されます。ノードオブジェクトがプールに解放されるか、プールから取得されると、pChild
およびの値はpSibling
NULLに設定されません。これにより、アプリケーションでクラッシュが発生していると思われます。
0xDDDDDDDD
プールからノードオブジェクトを取得したときに値がNULLでない場合は、pChildとpSiblingの値をに設定することを計画しています。私の目的は、プールからノードオブジェクトを取得した後、またはプールからノードオブジェクトを取得した後に、適切なオブジェクトポインターを設定せずに、pChild
またはpSibling
ポインターにアクセスしたときに、アプリケーションを強制的にクラッシュさせることです。pChild
pSibling
これは私が期待しているように機能しますか?そうでない場合は、強制アクセス違反に対してどのポインタ値を指定する必要がありますか。
フルページヒープを有効にして、アクセス違反をできるだけ早く取得しました。