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的值会变吗?的主要内容,如果未能解决你的问题,请参考以下文章