[问题] 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