我找到了一个在 python ctypes 中调整数组大小的答案
from ctypes import *
list = (c_int*1)()
def customresize(array, new_size):
resize(array, sizeof(array._type_)*new_size)
return (array._type_*new_size).from_address(addressof(array))
list[0] = 123
list = customresize(list, 5)
>>> list[0]
123
>>> list[4]
0
如果我再次调用它:
list = customresize(list, 40)
它给出了错误:
ValueError: Memory cannot be resized because this object doesn't own it
为什么它只适用于您第一次打电话customresize()
?我还看到有人发布了另一个答案:
def customresize(array, new_size):
return (array._type_*new_size).from_address(addressof(array))
customresize()
无论您调用多少次,这里都有效。
但它提出了另一个问题,我发现我的 python.exe 在你调整到更大的大小时不会使用更多list
的内存,这意味着内存没有分配给调整大小的list
. 在没有分配的情况下提供对内存的可访问性是否非常危险?为什么这样ctypes.resize
设计?真的是一头雾水。。。。