JNI框架不能为
为外部资源提供绑定,但是
威尔。在
Python提供了自动垃圾收集,但是如果使用C API
您必须手动获取并将任何references发布到python
对象并管理对本机数据的引用。^{}将
将^{}的引用计数增加一,以便
可以确保在调用^{}之前它是活动的
稍后相同的对象。一旦引用,内存将被释放
count达到零(是的,这是因为垃圾而简化的
收集器和循环引用,但原则上是正确的)。在
Java(JVM)也提供自动垃圾收集,但是如果
使用您必须手动管理所有references到
物体。它的行为类似于Python,使用
^{}或{}(取决于
对象的类型)来释放对所获取对象的本地引用
通过JNI。在
假设您想要包装本机C库foo:// foo.h
typedef struct {
char * bar;
} foo;
foo * foo_new(const char * bar);
void foo_delete(foo * self);
// foo.c
#include
#include
#include "foo.h"
foo * foo_new(const char * bar) {
// Allocate foo.
foo * self = malloc(sizeof(foo));
if (self == NULL) {