У меня есть проект 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, в отдельном случае.
Любая помощь будет принята с благодарностью.