Android ndk 使用JNI更改值意外访问的本机对象的类成员 我有一个java项目,其中我使用JNI使用C++代码。 我遇到了一个奇怪的问题
我有一门课看起来差不多是这样的:Android ndk 使用JNI更改值意外访问的本机对象的类成员 我有一个java项目,其中我使用JNI使用C++代码。 我遇到了一个奇怪的问题,android-ndk,java-native-interface,Android Ndk,Java Native Interface,我有一门课看起来差不多是这样的: class MyClass { private: MyType* _p; public: MyClass(); virtual ~MyClass(); void myFunc(); }; 以及: 除了myFunc之外,没有其他函数会触及\u p,并且由于某种原因,即使在将其初始化为NULL之后,当第一次调用myFunc时,\u p中也有一些垃圾值,函数会尝试删除它 MyClass的构造函数是使用JNI调用的,而myFunc
class MyClass
{
private:
MyType* _p;
public:
MyClass();
virtual ~MyClass();
void myFunc();
};
以及:
除了myFunc
之外,没有其他函数会触及\u p
,并且由于某种原因,即使在将其初始化为NULL
之后,当第一次调用myFunc
时,\u p
中也有一些垃圾值,函数会尝试删除它
MyClass
的构造函数是使用JNI调用的,而myFunc
也是在单独的场合使用JNI调用的
任何帮助都将不胜感激。您确定在MyClass的有效实例上调用myFunc吗?您可以通过ndk gdb通过调试器运行它吗?顺便说一句,删除空指针总是安全的,所以空检查是多余的。您如何使用JNI调用构造函数?如何安排从JNI调用<代码> MyFunc < /C> >引用您构建的同一C++对象?
MyClass::MyClass() : _p(NULL) {
// _p's value here is indeed NULL (0)
}
MyClass::~MyClass() {
}
void MyClass::myFunc() {
if (_p != NULL) {
delete _p;
}
_p = new MyType();
}