映射大小为零并返回NULL

时间:2016-03-17 04:50:46

标签: c++ data-structures

在下面的类中,我调用函数Register并在map中成功添加值。然后我正在检查大小,它显示为预期的1。现在我在一些不同的操作后调用函数getServerObj,我得到table内容大小为零

 20 class LocalDNServer
 21 {
 22     map<string,serverdetails*> table;
 23
 24     LocalDNServer()
 25     {
 26     }
 27     static LocalDNServer* ins;
 28 public:
 29     ~LocalDNServer()
 30     {
 31     }
 32     static LocalDNServer* getIns()
 33     {
 34         if(NULL == ins)
 35             return new LocalDNServer();
 36         return ins;
 37     }
 38     bool Register(const string& url, serverdetails* pServer)
 39     {
 40         printf("Calling register\n");
 41         //table[url] = pServer;
 42         table.insert(make_pair(url,pServer));// = pServer;
 43          printf("Map size = %d\n", table.size());
 44     }
 45     serverdetails* getServerObj(const string& url)
 46     {
 47         printf("Map size @ func __FUNC__%s = %d\n", __FUNCTION__,table.size());
 48         serverdetails* pT = table.find(url)->second;
 49         printf("%s\n", (pT->ip).c_str());
 50         exit(0);
 51         //return table.find((string*)url.c_str())->second;
 52     }
 53 };
 54
 55 LocalDNServer* LocalDNServer::ins = NULL;

我的计划的运费code

[root@readcpp proxy]# g++ -g main.cpp -o test
[root@readcpp proxy]# ./test
Implementation of proxy design pattern
Calling register
Map size = 1
Map size @ func __FUNC__getServerObj = 0
Segmentation fault
[root@readcpp proxy]#

任何人都可以指导为什么会这样吗?谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

我认为你的单例模式的实现可能存在问题。

select * from orders inner join urgent_orders on(DATE(orders.date ) = urgent_orders.date ) 并不存储已分配的getIns(),因此每次调用它时,都会获得一个新实例。

修正:

LocalDNSServer