初始化堆栈时出现分段错误

时间:2016-12-09 08:24:57

标签: c

typedef struct stack
{
    struct stack *ptr;
    char* data; 
}*tStack;

typedef struct{
    tStack top;
}*tStack_ptr;

void Sinit(tStack_ptr s)
{
    s->top = NULL;
}

int main() {
    //stack
    tStack_ptr s;

    Sinit(s);

return 1;
}

当尝试将top分配给NULL时,它会给我分段错误,任何想法? 它与匿名结构有关吗?

1 个答案:

答案 0 :(得分:0)

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {
    try {
        // Create the SessionFactory from hibernate.cfg.xml
        return new Configuration().configure().buildSessionFactory();
    }
    catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}

public static void shutdown() {
    // Close caches and connection pools
    getSessionFactory().close();
}

变量's'只是一个指向struct {tStack * top}的指针,系统不会将任何内存分配给它指向的结构。

在32位PC上,s在内存中占用4个字节,与其他指针相同,如“int *”。

您可以像这样定义tStack_ptr:

tStack_ptr s;  

这只是解决“段故障”,ststct tStack,我不确定你想要什么。