我有一个ctypes
结构和python函数:
import ctypes
class G(ctypes.Structure):
_fields_ = [("data",ctypes.POINTER(ctypes.c_ubyte)),
("length", ctypes.c_int)]
def __init__(self,length):
self.data = ctypes.cast(ctypes.create_string_buffer(length),ctypes.POINTER(ctypes.c_ubyte))
self.length = length
def func(filename):
g=G(500)
buffer=(ctypes.c_ubyte*(g.length))()
with open(filename, 'rb') as f:
f.readinto(buffer)
g.data=ctypes.cast(buffer, ctypes.POINTER(ctypes.c_ubyte))
return g
h=func('filename.txt')
func和g
返回的对象h
的地址不同。
为什么以及返回对象及其原始(正确?)地址的安全方法是什么?
我应该只传递指针或其地址吗?
或者是后续解除引用创建指向同一对象的第二个指针?
或者我应该使用全球?或完全抛弃func
?
谢谢!