亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1870 | 回復(fù): 5
打印 上一主題 下一主題

[C++] C++11 的一個(gè)問題,不解 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-08-18 15:46 |只看該作者 |倒序?yàn)g覽

  1. #include<memory>
  2. #include<mutex>
  3. #include<stdio.h>


  4. class DataHandler
  5. {
  6.     public:
  7.         ~DataHandler(){}

  8.         static DataHandler* GetInstance()
  9.         {
  10.             static std::once_flag flag;
  11.             std::call_once(flag,[&]{m_instance = new DataHandler();});
  12.             return m_instance;
  13.         }

  14.         void test()
  15.         {
  16.             printf("hello \n");
  17.         }
  18.     private:
  19.         DataHandler(){}
  20.         static DataHandler* m_instance;

  21. };
  22. DataHandler* DataHandler::m_instance = nullptr;


  23. int main()
  24. {

  25.     DataHandler *h = DataHandler::GetInstance();

  26.     h->test();


  27. }
復(fù)制代碼
g++   test.cpp -o test -lstdc++ -std=c++11

一運(yùn)行就core 了
terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
Aborted (core dumped)

std::call_once(flag,[&]{m_instance = new DataHandler();});  這句。



不太明白。 求解答,謝謝!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2016-08-18 15:51 |只看該作者
gdb 錯(cuò)誤如下

std::call_once<DataHandler::GetInstance()::{lambda()#1}>(std:nce_flag&, DataHandler::GetInstance()::{la
~                                                                                                        │mbda()#1}&& (__once=...,
~                                                                                                        │    __f=<unknown type in /home/toptrade/yantao/code/dataHandler, CU 0x0, DIE 0x343a>
~                                                                                                        │    at /usr/include/c++/6.1.1/mutex:608
~                                                                                                        │608               std::forward<_Args>(__args)...);

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [報(bào)告]
發(fā)表于 2016-08-18 16:15 |只看該作者
我用的是 mingw-w64,gcc版本是6.1.0
沒問題呀,即使 h 是空指針也沒問題。

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2016-08-18 17:12 |只看該作者
本帖最后由 sytpb 于 2016-08-18 17:13 編輯

gcc (GCC) 6.1.1 20160602

│Copyright (C) 2016 Free Software Foundation, Inc.

那就是我Gcc 沒有問題了。 奇怪

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2016-08-18 18:11 |只看該作者
本帖最后由 sytpb 于 2016-08-18 18:12 編輯

問題 我解決了。
編譯加上  -lpthread  運(yùn)行就不報(bào)錯(cuò)了。 好奇怪啊。


g++   test.cpp -o test -lstdc++ -std=c++11  -lpthread

另外貼一個(gè)singleton 實(shí)現(xiàn)

http://www.nuonsoft.com/blog/201 ... e-1/#comment-263121

論壇徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16賽季CBA聯(lián)賽之青島
日期:2016-07-05 12:36:0515-16賽季CBA聯(lián)賽之廣東
日期:2016-06-29 11:45:542015亞冠之全北現(xiàn)代
日期:2015-07-22 08:09:472015年辭舊歲徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39獅子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技術(shù)圖書徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
6 [報(bào)告]
發(fā)表于 2016-08-19 08:38 |只看該作者
-lpthread 是必須加的,它其實(shí)靠pthread實(shí)現(xiàn)的
-std=c++11 不如改為 -std=c++17

你貼的那個(gè)鏈接被墻了,我直接貼出代碼
  1. #include <memory>
  2. #include <mutex>

  3. class CSingleton
  4. {
  5. public:
  6.     virtual ~CSingleton() {}
  7.     static CSingleton& GetInstance();

  8. private:
  9.     static std::unique_ptr<CSingleton> m_instance;
  10.     static std::once_flag m_onceFlag;
  11.     CSingleton(void) {}
  12.     CSingleton(const CSingleton& src);
  13.     CSingleton& operator=(const CSingleton& rhs);
  14. };

  15. std::unique_ptr<CSingleton> CSingleton::m_instance;
  16. std::once_flag CSingleton::m_onceFlag;

  17. CSingleton& CSingleton::GetInstance()
  18. {
  19.     std::call_once( m_onceFlag, []{m_instance.reset(new CSingleton);} );
  20.     return *m_instance.get();
  21. }

  22. int main( void )
  23. {
  24.     CSingleton& a = CSingleton::GetInstance();
  25.     CSingleton& b = CSingleton::GetInstance();
  26.     printf( "%p\n", &a );
  27.     printf( "%p\n", &b );

  28.     return 0;
  29. }
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP