首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python如何保证内存安全?

Python如何保证内存安全?
EN

Stack Overflow用户
提问于 2022-06-25 05:41:41
回答 1查看 162关注 0票数 1

我正在学习Rust,在那里,他们认为下面(python-等效)代码是不安全的:

代码语言:javascript
复制
vec = ['1', '2']
ref = vec[0]
vec.append('3')

其基本原理是,ref是指向vec中元素的指针,但是,vec正在通过push命令在同一个作用域中发生变异,可能会将对象移动到内存中有足够空间的一个全新位置,从而导致ref是一个悬空指针=>,因此编译器由于代码不安全而失败。

我相信这种逻辑,但为什么在Python中这从来都不是问题呢?堆中仍然有vec,而ref是指针,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-25 05:58:51

ref不是指向vec的一部分的指针。它存储对字符串对象的引用。vec引用的list对象还存储对该字符串对象的引用。如果列表需要调整其底层存储的大小,它将把它持有的引用复制到一个新的缓冲区中,但是字符串不会移动,因此ref的引用不会因此操作而失效。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72751531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档