我在CRTDBG中检测到了一堆内存泄漏,但发现它们很难跟踪,因此安装了Visual Leak Detection.这显示了一致的泄漏数量,我追溯到没有虚拟析构函数的抽象类.我修复了这个问题,VLD现在在我的应用程序中没有显示内存泄漏,但是CRTDBG仍然会这样做,并且它一直显示大约100个左右的泄漏.
可以使用C++ 11信任这些工具中的任何一个吗?我大量使用独特的指针,几乎没有任何新的对象没有它们,所以无法理解泄漏的来源.
我正在尝试使用NDK r9b编译一些C++ 11代码,但无论我尝试什么它都不起作用.没有C++ 11功能的编译工作正常.
这是我的Application.mk:
NDK_TOOLCHAIN_VERSION := 4.8
APP_STL := gnustl_static
Run Code Online (Sandbox Code Playgroud)
这是我的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_CPPFLAGS := -std=c++11 -pthread -frtti -fexceptions
LOCAL_MODULE := RAGEAndroid
LOCAL_SRC_FILES := jni.c $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_LDLIBS := -llog -lm -landroid -lGLESv3
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
如果没有运气,我也试过设置以下内容:
LOCAL_CFLAGS := -D__GXX_EXPERIMENTAL_CXX0X__
LOCAL_CPPFLAGS := -std=gnu++11 -pthread -frtti -fexceptions
Run Code Online (Sandbox Code Playgroud)
我确保Eclipse在C++ general-> Paths and Symbols中有以下路径
(ndk path)/sources/cxx-stl/gnu-libstdc++/4.8/include
(ndk path)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include
Run Code Online (Sandbox Code Playgroud)
我有一个C文件(jni.c)和几个测试cpp/hpp.一切都编译好没有任何C++ 11功能,包括像<thread>或<memory>之类的东西不会引起任何抱怨,但是当实际创建一个std :: thread对象时,我得到"Type"std :: thread'可以不解决".这也适用于我尝试使用的其他功能(std :: unique_ptr,std :: shared_ptr,std :: move()等).
我已经阅读了许多关于让C++ 11编译的主题,但似乎没有任何工作,我相信我已经错过了一些但却无法弄清楚它是什么.任何帮助,将不胜感激!
编辑:如果我打印__cplusplus它显示201103L,所以看起来它使用正确的版本.
编辑2:std :: atomic似乎工作正常.
有没有办法将带有C++代码的外部文件夹添加到我的项目中,并且能够编译它的内容而无需在"编译源代码"下添加所有内容?如果添加新源,则会自动编译.
我已经尝试在"编译源代码"中添加外部文件夹,但它出现了,但它内部没有任何内容被编译.

我正在使用一个自定义组合框类,该组合框使用如下SQL查询从数据库填充:
playerCB->setDatabaseQuery("SELECT player.id, player.name FROM player WHERE player.team_id = " + QString::number(teamID) + " ORDER BY player.name;");
Run Code Online (Sandbox Code Playgroud)
(该类在内部保留每个返回行的所有选定值)。
我想在结果中添加一个临时行,其中player.id = -1和player.name =(自定义播放器),但是这些不应该存在于数据库中。仅当我无法对combobox类进行任何更改时,才应使用SQL查询来完成。我将如何去做,我是否必须使用临时表或其他东西?