Cython是否有辦法打包malloc'd值以便它們獲得GC'd?Cython是否有類似std :: unique_ptr的東西?
2
A
回答
0
PyCapsule是有點難看,因爲你必須定義每個類的析構函數,但它的伎倆:
from cpython cimport pycapsule
cdef const char* CAPNAME = "ExtClassName"
cdef void del_capsule(object o):
cdef ExtClass* cobject = <ExtClass*>pycapsule.PyCapsule_GetPointer(o, CAPNAME)
del cobject
def mk_cpp_object():
return pycapsule.PyCapsule_New(cp, CAPNAME, del_capsule)
很可能有辦法通過用C定義++「自動更」這樣做的模板製造自己的破壞者。然後,該類型可以在cython中實例化。
0
我這個打算:
cdef class AutoPtr:
cdef void* _ptr
def __cinit__(self): self._ptr = NULL
def __dealloc__(self):
if self._ptr: mem.PyMem_Free(self._ptr) # or whatever free function is relevant to your codebase
self._ptr = NULL
cdef AutoPtr mkauto(void* ptr):
cdef AutoPtr wrapper = AutoPtr()
wrapper._ptr = ptr
return wrapper
我認爲__cinit__
力量它的參數Python對象,所以這樣的事情甚至不會編譯:
cdef class AutoPtr:
cdef void* _ptr
def __cinit__(self, void* ptr): self._ptr = ptr
def __dealloc__(self): pass # etc
這裏有一個論壇的帖子爲此:https://mail.python.org/pipermail/cython-devel/2012-June/002734.html
鑑於Cython是什麼,我假設有一個內置的解除分配包裝,我只是不知道。
相關問題
- 1. 在C++ 11之前是否有類似於std :: function的東西?
- 2. MSVC是否有類似__builtin_va_arg_pack的東西?
- 3. 類似的東西?
- 4. 是否有類似Unity中的Update void的東西?
- 5. Django是否有類似「數據庫中間件」的東西?
- 6. Swift是否有類似C++引用的東西?
- 7. DevExpress是否有類似於Syncfusion BannerTextProvider的東西?
- 8. Actionscript是否有類似魔術常量的東西?
- 9. 是否有LARGEST_INTEGER宏或類似的東西? (C)
- 10. SQL Server 2008中是否有與Oracle Analytics類似的東西?
- 11. JUnit 3是否有類似於@BeforeClass的東西?
- 12. MEAN.js是否有類似於Sails.js藍圖的東西?
- 13. Appengine與Go:是否有一個http.Handle prehook或類似的東西?
- 14. 在Java中是否有類似於WebClient.DownloadString的東西?
- 15. Laravel中是否有任何JAXB類似的東西?
- 16. 紅寶石是否有類似buildout或virtualenv的東西?
- 17. C#中是否有類似於java.lang.Class的東西?
- 18. 是否有類似到Android的東西:stateNotNeeded爲WP應用
- 19. 在Windows Azure上是否有類似Assembly Binding Log Viewer的東西?
- 20. Qt中是否有類似.NET Reflector的東西?
- 21. 除了在jQuery中是否有類似的東西?
- 22. Java是否有類似JRoulette組件的東西?
- 23. Objective-C中是否有類似Java Comparable接口的東西?
- 24. 是否有類似WPF的DataTemplates東西在GTK /格萊德?
- 25. 在C++(或C++ 11)中是否有類似於c#的東西?
- 26. javascript是否有類似try catch的東西?
- 27. Perl中是否有類似Python Itertools的東西?
- 28. FireMonkey是否有與GetSystemMetrics類似的東西?
- 29. 模型中是否有與application_helper或application_controller類似的東西?
- 30. .Net中是否有類似ConcurrentSet的東西?