Члены класса собственного объекта, доступ к которому осуществляется с помощью JNI, неожиданно меняют значение - PullRequest
1 голос
/ 14 декабря 2010

У меня есть проект Java, в котором я использую некоторый код C ++, используя JNI. Я столкнулся со странной проблемой.

У меня есть класс, который выглядит примерно так:

class MyClass
{
private:
    MyType* _p;

public:
    MyClass();

    virtual ~MyClass();

    void myFunc();
};

И

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

Никакой другой функции, кроме myFunc, не касается _p, и по какой-то причине, даже после ее инициализации NULL, при первом вызове myFunc, _p содержит некоторое значение мусора функция пытается удалить его.

Ctor MyClass вызывается с использованием JNI, а myFunc также вызывается с использованием JNI, в отдельном случае.

Любая помощь будет принята с благодарностью.

...