Der folgende Code wird bei vec2 abstürzen (vec.size()), wenn ich den Code für Android x64 mit bauen NDK-build (x86 hat gut funktioniert).STL Vektor Absturz auf Android x64
hello.cpp
#include <vector>
#include <stdio.h>
using namespace std;
int main(int argc, char* argv[])
{
vector<int> vec;
vec.push_back(11);
vec.clear();
vector<int> vec2(vec.size());
return 0;
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.cpp
include $(BUILD_EXECUTABLE)
Application.mk
APP_ABI := x86_64
APP_STL := stlport_static
Es ist seltsam. Der Wert von vec.size() gleich 0. Wenn ich den Code wie folgt ändern:
vector<int> vec2(0);
die App wird nicht abstürzen. Das Problem scheint durch Compiler-Optimierung verursacht zu sein. CFLAG -O2 wird standardmäßig verwendet. Wenn ich ein weiteres CFLAG, wie zum Beispiel -O0, hinzufüge, stürzt die App auch nicht ab.
Weiß jemand warum?
Danke!