gpt4 book ai didi

c++ - 范围内有一个变量。在范围之外使用此变量地址是否是未定义的行为?

转载 作者:行者123 更新时间:2023-12-02 19:43:02 26 4
gpt4 key购买 nike

这是一个简单的例子。

void func()
{
int* p = nullptr;
if(p == nullptr)
{
int n;
p = &n;
}
*p = 10; // undefined behavior??
}
int main()
{
func();
}

没有complie警告(Visual Studio 2019),这样使用“* p = 10”是“未定义行为”吗?

它会因编译器、调试或版本而异吗?

最佳答案

是的,取消引用p 的行为未定义。

另请注意,一旦指向的对象超出范围,即使 读取 p 的行为也会出现问题:此时它是无效的指针值,形式上读取p的行为是实现定义的,其中可以包括系统生成的运行时错误。

后一点经常被忽视。

关于c++ - 范围内有一个变量。在范围之外使用此变量地址是否是未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60551017/

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