如果对象是可变的,则可以通过不指定 buffer()
(这是一个内置函数)的第二个参数来获取可修改的缓冲区,如下所示:
>>> s = bytearray(1000000) # a million zeroed bytes
>>> t = buffer(s, 1) # slice cuts off the first byte
>>> s[1] = 5 # set the second element in s
>>> t[0] # which is now also the first element in t!
'\x05'
但是,就我而言,我需要指定0x7fffffff
作为大小参数。在这种情况下:
>>> b = buffer(bytearray('a'), 1,0x7fffffff)
how to make b
writeable without copying it’s data ?在我的例子中,_ctypes
支持被禁用,并且程序不会以 root 身份启动。
当然,像内存 View 这样的东西是可用的,但我失去了在每个虚拟地址读取内存的可能性。
副本是必要的。 bytearray 的内部缓冲区根本不是 2 GiB 长;如果您想要 2 GiB 缓冲区,则需要将 bytearray 的数据复制到新缓冲区中。
如果您以某种方式强制 Python 将缓冲区视为您希望的大小而不进行复制,则写入它会损坏进程的内存和/或导致段错误。
我是一名优秀的程序员,十分优秀!