2013-05-19 25 views
-5

我猜它领先无处,NULL指针什么的,但是我检查只是事先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 address = *(DWORD*)(base + 0x54); 

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

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

我做有问题? 在此先感谢

+0

这是不可能告诉。你写的所有内容都可能是未定义的行为。如果不知道“base”的初始值是什么,就不知道。 –

+2

我在很多年前制定了一条经验法则:如果我有指向指针的指针,现在是时候重新思考我在做什么。这段代码还有另外一层,所以它更加难以理解。 –

+0

我遍历一系列的地址,每调用一次这个方法,base就是当前的地址。多级指针有什么问题? – user2361925

回答

1

访问冲突!

您正在触摸可能被禁止进入您的程序的某些内存部分。解引用指向未知位置的指针是未定义的行为。