使用静态c ++ getter而不是简单地访问变量会导致SIGSEGV ndk

时间:2017-02-02 23:15:18

标签: c++ android-ndk java-native-interface

我遇到了一个非常奇怪的运行时错误: 我有以下课程

class Application {
public:
  Application(){}
  Application(Window* w)
  :window(w)
  {};

  static std::string const& getDataStorageDirectory(){
      return dataStorageDir;
  }

  static std::string dataStorageDir;
  Window* window;
};

在Application.cpp中我初始化它:
std::string Application::dataStorageDir="asd";

现在,我在"标准"中使用opengles / ndk。方式(自己的Activity和自己的GLSurfaceView.Renderer(它正在运行另一个线程)。

现在如果我在我的代码中使用:
LOGI("data storage: %s", Application::dataStorageDir.c_str());
然后它很好用,但如果我使用:
std::string p = Application::getDataStorageDirectory(); LOGI("data storage (renderer): %s", p.c_str());
然后它以SIGSEGV

结束

可能导致此问题的原因是什么?

0 个答案:

没有答案