静态模板成员崩溃

时间:2016-04-12 17:43:23

标签: c++ templates static initialization runtime

我在加载时崩溃了我的动态库。

// in a.hpp

template <unsigned int Size>
class ATemplate : public A
{
public:
    ATemplate() : A(Size) 
    {
        init()
    };

    void init() 
    {
        // does stuff, it crashes here or "before" init() because "this" points to some random memory,...
    }
}

// in b.hpp

class B 
{
public:
    static const int Size = 128;
    static ATemplate<Size> Template;

}

// in b.cpp

ATemplate<B::Size> B::Template = ATemplate<B::Size>();
// also crashes like this:
ATemplate<B::Size> B::Template;

Afaik,A和B之间的继承不应该在这里重要,对吧?我已经阅读了有关静态对象初始化顺序的内容,但由于我不是真的有多个静态对象,只有一个,我不认为这在这里很重要。

你有什么想法,这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

编辑:这是一个堆栈溢出。现在我必须找出编译器决定将静态成员对象放在堆栈上的原因,......