gpt4 book ai didi

c - 内存未分配的指针变量可以工作。如何?

转载 作者:行者123 更新时间:2023-11-30 20:30:33 24 4
gpt4 key购买 nike

我已经编写了这段代码并预计它会失败,因为我没有为指针变量分配内存。令我惊讶的是,它没有抛出任何错误。是什么原因?

如果我随机删除第二个 LOC,它会引发段错误。如何解释这种看似奇怪的行为?

uint16_t *c; 
uint8_t *d;
*c = 1;
printf("%x:%x",c,*c);

最佳答案

正如其他人指出的那样,它是 UB。您对代码“工作”的观察(在不导致段错误或类似情况的意义上)或多或少是随机的。您在堆栈上分配的另一个变量可能会改变您的 c 指针的分配位置,因此它可以有一个不同的(随机)指向的位置。 (或者,换句话来说,它的初始随机值将会或可能不同)。

根据函数内分配的位置和对象(独立)对象的不同,程序可以观察到不同的行为,这完全暴露了函数中的内存分配存在问题。

关于c - 内存未分配的指针变量可以工作。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019823/

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