我收到此错误
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0xb064425c
调用以下函数时:
const std::map<FunctionID, std::string> getEnumElementsStringRepresentation() {
static bool is_initialized = false;
static std::map<FunctionID, std::string> enum_string_representation; // Fails here
if (false == is_initialized) {
enum_string_representation.insert(std::make_pair(FunctionID.capabilities, "capabilities"));
... many more similar inserts
is_initialized = true;
}
return enum_string_representation;
}
这似乎是一个读/写错误,但我不确定最好的调试方法。
答案 0 :(得分:2)
你说你的代码是多线程的。由于函数静态map
实例,getEnumElementsStringRepresentation
不是可重入的(通常)。您必须使用互斥锁保护该功能,或使用线程本地存储。