我试图理解一部分代码。我省略了很多代码,以使其更易于解释,并避免不必要的混淆。
typedef void *UP_T;
void FunctionC(void *pvD, int Offset) {
unsigned long long int temp;
void *pvFD = NULL;
pvFD = pvD + Offset;
temp = (unsigned long long int)*(int *)pvFD;
}
void FunctionB(UP_T s) {
FunctionC(s, 8);
}
void FunctionA() {
char *tempstorage=(char *)malloc(0);
FunctionB(tempstorage);
}
int main () {
FunctionA();
return 0;
}
就像我说的,我遗漏了大量代码,因此这些函数看起来毫无用处,因为它们只有两行代码。
是什么temp
?这就是让我感到困惑的地方。当我运行与此代码类似的东西并printf()
沿途使用语句时,我得到一个随机数pvD
,并且pvFD
是该随机数加八。
但是,我也可能错误地打印了值(使用%llu
而不是%d
,或类似的东西)。我很确定它是指向内存中tempstorage
加 8 位置的指针。这是正确的吗?在我继续这个假设之前,我只想确定一下。