gpt4 book ai didi

Python - 释放/替换字符串变量,它是如何处理的?

转载 作者:太空狗 更新时间:2023-10-30 01:29:37 25 4
gpt4 key购买 nike

假设我将纯文本密码作为字符串存储在名为 passWd 的变量中。一旦我丢弃这个变量,python 如何释放它(例如,使用 del passWdpassWd= 'new random data')?

字符串是否存储为字节数组,这意味着它可以在它最初存在的内存位置被覆盖,或者它是内存区域中的一个固定集合,无法修改并且在分配新值时内存区域被创建,旧区域被丢弃但没有被null覆盖?

我在质疑Python是如何实现内存区域安全的,想了解更多,主要是好奇:)

根据我目前收集到的信息,使用 del(或 __del__)会导致解释器无法自动释放该变量的内存区域,这可能会导致问题,并且我也不确定 del 在删除这些值时是否有问题。但这只是我收集到的,而不是非黑即白的 :)

我问的主要原因是,我打算编写一个移交应用程序,它获取一个字符串,执行一些 I/O,将它传递给另一个子系统(例如树莓派的引导加载程序)和接口(interface)是用 Python 编写的(这在某些人的耳朵里听起来一定很奇怪……)而且我不担心数据在 I/O 计算期间受到损害,但在两个子系统切换之间可能会发生内存转储。或者如果系统被卡住(比如休眠),比如在系统启动后 20 分钟,我尽可能快地删除了变量,但不知何故,尽管我执行了 del passWd ,它仍然在内存中: )

(Ps。我问过 super 用户,他们在这里推荐我,我很抱歉语法不好!)

最佳答案

除非您使用自定义编码输入法来获取密码,否则它会出现在更多地方,而不仅仅是您的不可变字符串。所以不要太担心。

操作系统应该注意在将内存分配给另一个进程之前清除您进程中的任何数据。如果页面被复制到磁盘(换出或休眠),这当然可能会失败。

安全密码输入并不容易。也许您可以找到一个特殊的库或模块来处理这个问题。

关于Python - 释放/替换字符串变量,它是如何处理的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com