我们有一个类来表示一个非常大的应用程序列表:无效指针强制应用程序崩溃
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