Value s_test; int WINAPI WinMain(HINSTANCE s,HINSTANCE p,char * cmd,int show) { s_test["aaa"] = 1; }
原因是这里,在全局变量析构之前,这个静态变量已经析构了。
static ValueAllocator *&valueAllocator() { static DefaultValueAllocator defaultAllocator; static ValueAllocator *valueAllocator = &defaultAllocator; return valueAllocator; }
改成这样就ok了。
static ValueAllocator *&valueAllocator() { static DefaultValueAllocator *defaultAllocator = NULL; if (defaultAllocator == NULL) { defaultAllocator = new DefaultValueAllocator; } static ValueAllocator *valueAllocator = defaultAllocator; return valueAllocator; }