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时,它会给我分段错误,任何想法? 它与匿名结构有关吗?
答案 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,我不确定你想要什么。