gpt4 book ai didi

c - 是否可以保留指向局部变量超出该变量范围的指针?

转载 作者:行者123 更新时间:2023-12-01 15:06:09 25 4
gpt4 key购买 nike

假设我使用这段代码:

int *pointer;
if(1) {
int num = 5; // local variable, can't be used outside the if block.
pointer = &num
}

这是跟踪 num 变量的安全方法吗?我知道这段代码会起作用。但是我认为编译器会使用旧的num内存来分配新的变量,导致pointer指向一个不可预知的值。是真的吗?

最佳答案

不,这不安全。当到达 if 的结束 } 时,num 的生命周期结束,pointer 的值变为不定。之后使用它会调用未定义的行为。

编译器实际做什么取决于它,它可能会将用于 num 的存储空间用于另一个在 num 出现之前未使用的局部变量。那么用pointer获取num的值肯定会失败。

关于c - 是否可以保留指向局部变量超出该变量范围的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991179/

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