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();
}