gpt4 book ai didi

c - 跟随 malloc(0) 返回的指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:43 26 4
gpt4 key购买 nike

我正在尝试理解一部分代码。我省略了很多代码,以便更容易解释,并避免不必要的混淆。

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() 语句时,我得到了 pvDpvFD 的随机数是那个随机数加八。

但是,我也可能错误地打印了值(使用 %llu 而不是 %d 或类似的东西)。我很确定它是指向内存中 tempstorage 加 8 的位置的指针。这是正确的吗?在我继续假设之前,我只想确定一下。

最佳答案

标准规定 malloc(0) 返回 NULL 或有效指针,但该指针永远不会被取消引用。没有任何关于实际实现,因此您不能依赖返回的指针是另一个加 8。

关于c - 跟随 malloc(0) 返回的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com