C++ C++;在得到指针时崩溃

C++ C++;在得到指针时崩溃,c++,C++,我猜它没有指向任何地方,一个空指针或其他东西,不过我只是事先检查一下 这两个代码段都会崩溃: //Snippet 1 DWORD *address = (DWORD*)(base + 0x54); if (address) address = (DWORD*)(*address + 0xC); if (address) address = (DWORD*)(*address + 0x8); //crashes here //Snippet 2 DWORD addres

我猜它没有指向任何地方,一个空指针或其他东西,不过我只是事先检查一下

这两个代码段都会崩溃:

//Snippet 1
DWORD *address = (DWORD*)(base + 0x54);

if (address)
    address = (DWORD*)(*address + 0xC);

if (address)
    address = (DWORD*)(*address + 0x8);   //crashes here


//Snippet 2
DWORD address = *(DWORD*)(base + 0x54);

if (address)
    address = *(DWORD*)(address + 0xC);

if (address)
    address = *(DWORD*)(address + 0x8);   //crashes here
我做错什么了吗? 提前感谢

访问违规


您正在触摸内存的某些部分,这可能是您的程序所禁止的。取消对指向未知位置的指针的引用是未定义的行为。

无法判断。你写的所有东西都可能是未定义的行为。如果不知道
base
的初始值是什么,就不知道了。多年前,我制定了一条经验法则:如果我有一个指向某个指针的指针,那么是时候重新思考我在做什么了。这段代码还有另一层,所以更不容易理解。我正在遍历一个地址数组,并在每次运行时调用这个方法,base是当前地址。多级指针有什么问题吗?不幸的是,如果没有SSCCE(),我们在这里就无法给您提供太多帮助。如果您编写了愚蠢的代码,那么您可能会得到愚蠢的结果。