golang 内部变量超时释放机制?

今天在调试的时候发现有个内部变量调试到一半被释放了。

执行一段时间以后authUidArray的值变成乱码了:

 

 

 

我当时一脸懵逼,重来没有见过这种事情,直接颠覆我的认知,值哪里去了?c/c++/python/js可重来没有出现这种情况

以至于我还重启了电脑,重启了code,结果发现都是这样。

当然试了多次以后还是找的了一些规律,首先一个必然的原则,如果后面还用到这个变量,是肯定还有值的,不信你看:

 

加了一个输出以后,肯定都有值的。


 

 

还发现其他情况:

如果中间处理时间比较短,它也有值,好像是golang编译器故意给临时变量设置了一个timeout时间一样

这样的话,我还能理解,

就当作是golang本身的优化吧:未来永久用不到,超时以后就直接释放了。

要是有人知道原因麻烦告诉我一下。

posted @ 2023-01-04 16:42  若-飞  阅读(87)  评论(0编辑  收藏  举报