python中t没有值,a=t,a的值会变吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中t没有值,a=t,a的值会变吗?相关的知识,希望对你有一定的参考价值。

参考技术A

直接上程序试验一下

看到 a 的值变了。

Go和C++的指针区别,gc后指针会变吗?

【中文标题】Go和C++的指针区别,gc后指针会变吗?【英文标题】:Pointer difference between Go and C++, will pointer change after gc? 【发布时间】:2019-10-06 17:24:45 【问题描述】:

Go 和 C++ 中指针的工作方式有区别吗,gc 后指针会改变吗?

我想知道Go中指针和内存的具体关系。如有相关资料或源码说明,万分感谢。

【问题讨论】:

我可以解释这一点。 “[T][Go] 中指针和内存之间的特定关系”是。指针是内存地址。 啊,对不起,我忘了回答标题中的问题:没有。 也许@jimmy 看起来像this? :) 感兴趣? pointers 和 unsafe. 在c++中指针总是指向一个内存地址,但是在golang中,GC可能会重新组织内存。发生这种情况后指针会改变吗? 【参考方案1】:

语言规范没有说明指针是否应该保持不变。这意味着您不应该依赖/构建它。

您可以保证,如果指针在垃圾回收周期后发生更改,或者运行时由于内存分配/释放而更改了指针,您变量中的指针将被更新以反映更改。

unsafe.Pointer 的文档中有一个提示,指针可能会改变:

uintptr 是一个整数,而不是一个引用。将指针转换为 uintptr 会创建一个没有指针语义的整数值。即使 uintptr 拥有某个对象的地址,如果对象移动,垃圾收集器也不会更新该 uintptr 的值,该 uintptr 也不会阻止该对象被回收。

实际上,垃圾收集器不会一直到处更改指针,这将是不必要的开销。但是如果很多对象被释放并压缩内存,或者存在释放未使用内存的“压力”(例如由于调用debug.FreeOSMemory()),它可能会重新排序内存中的对象。

【讨论】:

以上是关于python中t没有值,a=t,a的值会变吗?的主要内容,如果未能解决你的问题,请参考以下文章

Go和C++的指针区别,gc后指针会变吗?

Python赋值

微信openid会变吗

函数—参数会变吗

word文档转换成pdf内容格式会变吗

如何交换两个变量的值