pointers - 指针比较使我的程序崩溃

标签 pointers crash

我有一行代码在 Release模式下使我的程序崩溃,但在 Debug模式下却没有......

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

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

该代码在 Debug模式下完美运行,所以我无法让它在 Debug模式下崩溃甚至出现故障,让我看看发生了什么......我不明白这有什么问题。有任何想法吗?

如果有帮助,我将使用 VC6 进行原型(prototype)开发(仅仅是因为 IDE 资源密集型较少)...

谢谢

最佳答案

不能pPrev没有初始化?

如果是,前提条件 (DWORD)pPrev < (DWORD)pBlock无法保持在 Debug模式,因为未初始化 pPrev设置为 0xCCCCCCCC (或 CD ?),这肯定会大于任何转换为​​ DWORD 的指针(2,在 32 位模式下最多 3GB -> 最大用户空间地址 0xBFFFFFFF )。

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

关于pointers - 指针比较使我的程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382883/

相关文章:

c - 在函数参数中使用指针或数组

c++ - 指向指针数组的常量指针

crash - CouchDB 意外终止

crash - 如何解决 malloc 崩溃问题

c# - Windows 控制台应用程序最后突然崩溃

c++ - 无法使用指针访问类函数

c - 分配给指针数组结构的元素不起作用(空)

c++ - 在对象 vector 中添加指针

c# - 在 Windows 移动设备上调试时,如何阻止 Visual C# 2005 崩溃?

c++ - 删除时无效指针崩溃,但指针不同