【发布时间】:2014-07-02 13:58:51
【问题描述】:
我的 C API 中有以下函数:
MyStruct *create();
void destroy(MyStruct **s);
我通过 JNA 将它们映射到:
Pointer create();
void destroy(Pointer p);
我有一个加载共享库并使用这些函数的类:
class MyClass{
private mySharedLibrary library;
private Pointer p;
public MyClass(){
this.library = (MySharedLibrary)Native.loadLibrary("mylibrary", MySharedLibrary.class);
this.p = library.create();
}
}
我不知道何时以及如何调用destroy函数...或者我根本不应该调用它? Java 中没有析构函数。此外,它得到 MyStrct** 作为参数......我该怎么办?
【问题讨论】:
-
您确定您的
destroy签名正确吗?看起来它采用了create返回的值的地址,而不是值本身。
标签: java c memory-leaks jna