[問題] atomic_compare_exchange與shared_ptr

作者: Caesar08 (Caesar)   2016-03-22 19:37:15
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 14.0
程式碼(Code):(請善用置底文網頁, 記得排版)
(新的)
http://ideone.com/rE4K3N
沒問題了
(原文)
http://ideone.com/dmc08e
我覺得thr_stack::pop應該有寫對才對
可是VC++執行到一直會崩潰
然而我用gcc 5.3.0就正常執行的,都沒有錯誤
所以想問各位,
1. 是VC++ 14.0有錯?
2. 還是code有寫錯?
作者: LiloHuang (十年一刻)   2016-03-22 22:01:00
先不探討 ABA 問題,程式會崩潰是因為 stack overflow做個實驗把 default stack size 改成 100 MB 看看請參考 https://goo.gl/1ABvms 然後改成 104857600因為 std::shared_ptr<T> 的 destrustor 又呼叫了下一個節點的 destructor,當節點數量級很大時就會崩潰

Links booklink

Contact Us: admin [ a t ] ucptt.com