我們有一個類來表示一個非常大的應用程序列表:無效指針強制應用程序崩潰
CSMLNode
{
CSMLNode *pChild;
CSMLNode *pSibling;
CSMLNode()
{
pChild = NULL;
pSibling = NULL;
}
}
爲了優化,創造了被關在一個游泳池和反覆使用的壽命的節點對象應用。節點對象僅在節點對象的數量超過特定計數時才被釋放。當節點對象釋放到池中或從池中取出時,值pChild
和pSibling
未設置爲NULL。我們認爲這會導致應用程序崩潰。
我打算將pChild和pSibling的值設置爲0xDDDDDDDD
,如果從池中獲取節點對象時其值不爲NULL。當從池中取出節點對象後,訪問pChild
或pSibling
指針時沒有將適當的對象指針設置爲pChild
和pSibling
,我的強化就是強制性地使應用程序崩潰。
這個工作是否符合我的預期?如果沒有,我應該給予強制訪問違規的指針值。
我已啓用整頁堆以儘早獲取訪問衝突。
阻止您在發佈過程中將指針設置爲NULL嗎? – 2012-04-14 07:18:50
我不確定。我們正在分析 – Maanu 2012-04-14 07:20:33
爲什麼不在創建對象時將這些指針設置爲適當的值(NULL或適當的其他位置),而與是否在發佈時將它們設爲空值無關。你的構造函數不應該讓你使用隨機內存。 – 2012-04-14 14:47:15