指针比较崩溃了我的程序

时间:2010-12-07 23:48:13

标签: pointers crash

我有一行代码在发布模式下崩溃了我的程序,但没有在调试模式下崩溃......

if((DWORD)pPrev < (DWORD)pBlock && pPrev->pList == &gFreeList)

我转换为DWORD来比较指针的地址......在这个if-block中,前一个节点将累积当前节点,但前提是它的物理地址低于当前块并且它已经空闲。 ..块代码不是问题。它甚至不会进入街区。它在指针比较过程中崩溃了。

代码在调试模式下完美运行,所以我无法让它在调试模式下崩溃甚至出现故障,让我看看发生了什么......我没有看到这有什么问题。有什么想法吗?

如果有帮助,我使用VC6进行原型开发(仅仅因为IDE资源消耗较少)......

由于

2 个答案:

答案 0 :(得分:0)

比较不应该在这里造成问题。事实上,我认为即使没有强制转换为DWORD,这种比较也会起作用。我怀疑它是导致问题的pPrev-&gt; pList。你确定pPrev在取消引用之前没有被意外释放吗?

答案 1 :(得分:0)

pPrev无法初始化?

如果是这样,前提条件(DWORD)pPrev < (DWORD)pBlock无法保持在调试模式,因为已将单位化pPrev设置为0xCCCCCCCC(或CD?),这肯定会更大比任何转换为​​DWORD的指针(2,32位模式下最多3GB,&gt;最大用户空间地址0xBFFFFFFF)。

但是,在发布模式下它会包含任何垃圾,因此可以在(DWORD)pPrev < (DWORD)pBlock中取消引用并使程序崩溃。