返回信息流刚刚试了一下发现这样做不会报错和警告
这是一条镜像帖。来源:北邮人论坛 / cpp / #101894同步于 2022/4/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
利用返回vector<data_type *>将函数内的局部变量的地址传递到函
LChen
2022/4/29镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
个人觉得如果在函数内定义的栈空间变量在函数结束的时间就会被回收,不太安全,后续该地址是啥是不可预知的
【 在 LChen 的大作中提到: 】
: 标题被吞了一部分,后面是“传递到函数外是否安全?”
局部变量的生命周期在函数返回时终止。指向这些变量的指针也变成无效指针。访问无效指针是“未定义行为”,可以有任何后果,从什么都不发生到机器冒烟都有可能。
但是我在online gdb上这样尝试发现每次都能正确读出变量值诶,而且如果直接返回指针是会报错或者警告的,用vector不会,所以在怀疑是不是vector针对这种情况有什么内部优化
【 在 nuanyangyang 的大作中提到: 】
: 局部变量的生命周期在函数返回时终止。指向这些变量的指针也变成无效指针。访问无效指针是“未定义行为”,可以有任何后果,从什么都不发生到机器冒烟都有可能。
没有优化,仅仅是编译器发现不了而已
【 在 LChen 的大作中提到: 】
: 但是我在online gdb上这样尝试发现每次都能正确读出变量值诶,而且如果直接返回指针是会报错或者警告的,用vector不会,所以在怀疑是不是vector针对这种情况有什么内部优化
谢谢[bbsemoji718][bbsemoji8333][bbsemoji8226][bbsemoji666][bbsemoji8226][bbsemoji8334][bbsemoji719]
【 在 silicat 的大作中提到: 】
: 未定义行为:根据不同系统、不同编译器、不同编译优化会有不确定的行为,可能是符合预期的值也可能是不符合预期的值。 该避免的还是要避免